{"_id":"iobroker.nexowatt-ui","_rev":"270-6977aedab6501c18349abfac5e528e53","name":"iobroker.nexowatt-ui","dist-tags":{"beta":"0.6.144","stable":"1.0.3","latest":"1.0.21"},"versions":{"0.6.144":{"name":"iobroker.nexowatt-ui","version":"0.6.144","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.144","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/USER/iobroker.nexowatt-ui#readme","bugs":{"url":"https://github.com/USER/iobroker.nexowatt-ui/issues"},"dist":{"shasum":"93aacf0464f23419601d4ecdda914ec92971f76e","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.144.tgz","fileCount":98,"integrity":"sha512-BL/iDhyvxUYo3UkLSqhZkVoiKy1tOSzgdPuh/06YpJHUxHQ6f3oOSlEHAHzk+2QceP4MzPx+6rRoeDbJ5KPTgw==","signatures":[{"sig":"MEQCIEgVI74AOecmb7uY4hnz+eIsV6/+TEgkcXMXQIUnI3xGAiA3ZNvj2BcOWYS/ubytPwD7g4aYWv3rmC5Bg1xaEmFMWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10036192},"main":"main.js","engines":{"node":">=16"},"gitHead":"82489143abe830f1aa2b66e9eea950603be5ca50","scripts":{"dev":"node main.js","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/USER/iobroker.nexowatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.144_1771359092789_0.46071209830241977","host":"s3://npm-registry-packages-npm-production"}},"0.6.209":{"name":"iobroker.nexowatt-ui","version":"0.6.209","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.209","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/USER/iobroker.nexowatt-ui#readme","bugs":{"url":"https://github.com/USER/iobroker.nexowatt-ui/issues"},"dist":{"shasum":"f181e24217e19f1292d8a9b8f10aa7bd4be03950","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.209.tgz","fileCount":108,"integrity":"sha512-Agz8NN7XcQw9JSwlF9VXWHpj4gX2iKHQ9v5cTcoJxJly/fZoio3Wwz6fb5Ygn8opHhZUnnWJj/UfVfeNTNhaEg==","signatures":[{"sig":"MEUCIGr5llmfrBG2p64fQvq6JGm3Wd5yXcVBjR4sl8Fk7tRaAiEAhrbvdQTJmbl+WxP+nBLucK5kuhZgGMin5MhS+q0kxNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9053897},"main":"main.js","engines":{"node":">=16"},"gitHead":"d473a30acd5ac15ede360ee307f0362814bd81ca","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/USER/iobroker.nexowatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.209_1774803453183_0.2108535556010378","host":"s3://npm-registry-packages-npm-production"}},"0.6.211":{"name":"iobroker.nexowatt-ui","version":"0.6.211","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.211","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"ef3f7889fadfe308e2bb16b62e4d238044efa5c3","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.211.tgz","fileCount":108,"integrity":"sha512-cMiMKY+oD4AWi/Gf+M2j6D3cvm74yS3WEg/rIIHaWW7Pai1ucW6NTLhGPyulI1xIEFgPyQGc1nHTYqB0qCndLA==","signatures":[{"sig":"MEUCIQCLqOwLwnPP0jh0snWo5EVHrAt8+dmDRWYQaSyu1PKKZAIgAwbeNlALxRg0/nIjkdCjp7k6tc0KHZ6fvb8V1kJnHXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9066509},"main":"main.js","engines":{"node":">=16"},"gitHead":"641f5fbd11fcdfa5a74eceb1a2ddb6fce64544d8","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.211_1775216906588_0.39272166649946194","host":"s3://npm-registry-packages-npm-production"}},"0.6.214":{"name":"iobroker.nexowatt-ui","version":"0.6.214","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.214","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"175d5a93d150888caba3c5e29404add3cf244a22","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.214.tgz","fileCount":108,"integrity":"sha512-TBYG/9Fe8iumI8grORvDdDwz835Z4aaRnh+xMACRleCPIWmZuYWg+bqm9jqS9CveNsbS5c430vYv375slEAFMA==","signatures":[{"sig":"MEUCICBshEYJoGnxOsX+dYH28FlaPxB3m4LW88EZFHb9KNo5AiEAqGc8JaHC0VndqRBFk5HKMIKgW6S1WEO3/7rdkwmoQkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9078433},"main":"main.js","engines":{"node":">=16"},"gitHead":"77b7e5604e85c1dae8406dc999e838030a11e7ba","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.214_1775631920036_0.7237235926675443","host":"s3://npm-registry-packages-npm-production"}},"0.6.218":{"name":"iobroker.nexowatt-ui","version":"0.6.218","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.218","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"0c67edeb2d2aee9b1166639f68595ecc8b50fa40","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.218.tgz","fileCount":114,"integrity":"sha512-lWk3p6IIDhLI/w7b8P+IgD3N9MveUY5gE273jFyu8du6m0/9/mkomuSrP4Xu0c7/c9lTdiXeq5OSmJrENkDn8w==","signatures":[{"sig":"MEUCICRjOFevi9BuLFQ8V1DmAZamDyk/pkxXpVui7vpaxxexAiEA2T96c15kfICfNWowoLo6o/01s4A7gjEeDL3sWORezJA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9180887},"main":"main.js","engines":{"node":">=16"},"gitHead":"e826e62effee934414a6d5b14ce29550eb3160ae","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.218_1775834857187_0.3342628247251882","host":"s3://npm-registry-packages-npm-production"}},"0.6.219":{"name":"iobroker.nexowatt-ui","version":"0.6.219","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.219","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"505b02fe33c3c07d4c406edbdf3cb0ac29b35d30","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.219.tgz","fileCount":114,"integrity":"sha512-vvUjAmGnPVvGeaHA4FciSIWtXciAVt2Vu0O4d8JpH/4G5TvaXtlMuiFCo3FX/YzkM2dZ4qaOkFkiaU354nXioQ==","signatures":[{"sig":"MEQCIBG0WkE7FZVPfCdUW+fURnlWJfgIJZF/eJRP2tXSDgcSAiAIFiE5MoFIFG1pG/bdK6KHn/2gVH+5A6GftOFjarECxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9183360},"main":"main.js","engines":{"node":">=16"},"gitHead":"f88c6b645a5c1c31c33054b86d77df26458532e8","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.219_1776008550300_0.27092274883680423","host":"s3://npm-registry-packages-npm-production"}},"0.6.221":{"name":"iobroker.nexowatt-ui","version":"0.6.221","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.221","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"4b512ba9d8c71c87a4f27bda8fafb554874c265c","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.221.tgz","fileCount":114,"integrity":"sha512-CZoZfqNusCtbJQjIFmNsN9tPAqNoJrldqvJfjT7LV07fdcmkKDMi4aO/i2ABoeJS+o0u7J6E4fBIoDaOI8um/A==","signatures":[{"sig":"MEQCIGpo+HLD2QixBQj8FvaOwaKY11h/DO1gplXzQSTJJQSHAiAoVOdsJhRz5LRqBc0WacPqwT21p1xl1eDduUrBqIy2Ug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9185037},"main":"main.js","engines":{"node":">=16"},"gitHead":"24d470b52bc2225d931b22357545237be296fd86","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.221_1776016594152_0.20421985806002052","host":"s3://npm-registry-packages-npm-production"}},"0.6.222":{"name":"iobroker.nexowatt-ui","version":"0.6.222","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.222","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"69d9ba05d5f4a5b6400ae3ac206f52228d79fcf9","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.222.tgz","fileCount":114,"integrity":"sha512-nSL8+hePAMtPoSVJA6tHIcis2L64yY7Lg2eRq4HN2JBc5svg3qA8VLQMhJnaKIJb8Z1qLPLTZ6aPYRfzkqSTZA==","signatures":[{"sig":"MEQCIAsRbqYK4RDOiWtNjbftfa1v2TWs1CdLy+bFV+pXsAlrAiAWDZVVM+wX1W7UbNgPIxjNJcb7z8mReFoVXxcxOKVI8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9186513},"main":"main.js","engines":{"node":">=16"},"gitHead":"f61434241e146d85263f3e0ec7a71c29f1691689","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.222_1776191075493_0.26680964966430865","host":"s3://npm-registry-packages-npm-production"}},"0.6.223":{"name":"iobroker.nexowatt-ui","version":"0.6.223","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.223","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"def8721071844271eb4ab927502f54e8f07d2540","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.223.tgz","fileCount":114,"integrity":"sha512-RyOY2Z+DFBk4TeGLOK7anTqPxtuZq0GKpA9cVqFe00z2XqT+Swqm3yvTm5u9Pr9FtEFBkLtab8IiWnZL1lug+Q==","signatures":[{"sig":"MEUCIDiD+wb/DcTZ1MhaGizfcQHWK1N4NscZNEnMDlQ1/Dj4AiEA+myZz4y0pLoAHBW8ANpB15AddUYffJXA+VfkgEmalM8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9191054},"main":"main.js","engines":{"node":">=16"},"gitHead":"2ee0fb876ed071dcc1c55354c6011380e8a543ef","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.223_1776447743993_0.12734872463379743","host":"s3://npm-registry-packages-npm-production"}},"0.6.225":{"name":"iobroker.nexowatt-ui","version":"0.6.225","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.225","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"da9dd77774ff232b16b4bc03bafdd6da812ce2ff","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.225.tgz","fileCount":114,"integrity":"sha512-zjnQBeT/DcTKcPxe+wj5np+5HAz980q6TyiBr8GRrYOwn2+4BD9MLC35kdAZkGbEV2594JUgIDqrVU5+W3g4hA==","signatures":[{"sig":"MEUCIQCWD+YDEHaOeXPbOgm4HOxulTx+BtTQGBUPES/f0gS6rAIgOC243kW0JfA+XDS6NghNfNkDouM4fTqnxiUidLkgHVg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9209902},"main":"main.js","engines":{"node":">=16"},"gitHead":"d8b30a5b49fde7f962100a37b73d579c8a822367","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.225_1776455064258_0.6655077439709094","host":"s3://npm-registry-packages-npm-production"}},"0.6.226":{"name":"iobroker.nexowatt-ui","version":"0.6.226","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.226","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"75aa220cfd38d16a0402b8e531b6e36fb5e7771d","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.226.tgz","fileCount":114,"integrity":"sha512-PZibm/6Zg200/HyiDQucLWtFNglroQlD1H4VaotuqrvhrCmvlrQFTxWHnimY0FrzCr1ghHiLdAIvgGgp20pBRQ==","signatures":[{"sig":"MEUCIQDLTj6xutHfZa+90aVTo6J8X2RmAmab404+qoLVkzDEAgIgW+8n8bT7HMEKKpoqRXUR9J1NmFwDZsSmqj+mx38I1e4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9211389},"main":"main.js","engines":{"node":">=16"},"gitHead":"d754325a0174b0299ba3b8dca2bd1f837a33c7b1","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.226_1776456685407_0.37542394455351835","host":"s3://npm-registry-packages-npm-production"}},"0.6.227":{"name":"iobroker.nexowatt-ui","version":"0.6.227","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.227","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b3c43bf8b3d9ec3970b51f4d019a65e4e497cc40","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.227.tgz","fileCount":114,"integrity":"sha512-vt9a3hllT63PgrlgLQE1SGKHEemwocUNbInkIyhFyuO9bgvpKNITey1dw9CzKzuBA823QFPrGiKygrXWvt4cug==","signatures":[{"sig":"MEUCIBDMiqxoaop95eEWQAjIEJD0xSBzdLqzvMMsV8nysamTAiEAu4J/dbloruMe5Xh8ifNp529hSeZWSigdMDw74VR9RCI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9212186},"main":"main.js","engines":{"node":">=16"},"gitHead":"28852b442d9748349c1ce7f3603c4a7e7a197388","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.227_1776489656660_0.2675314921007068","host":"s3://npm-registry-packages-npm-production"}},"0.6.228":{"name":"iobroker.nexowatt-ui","version":"0.6.228","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.228","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"238bd321e49f2d341d8b6f5221ea8c535b568804","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.228.tgz","fileCount":114,"integrity":"sha512-yAiM80qJWZgBukD/cZtXDqjvIwbcPIC1gwS+WiCzaJ+zlSM+pOgjxwyZ+FwjcVpunifu9pxgZKHqpDn0+smqng==","signatures":[{"sig":"MEYCIQCDvAFDUL3FOsLzQXUfIg2J4/yONsqnVnk/wNrtzhUnrAIhAI+OlalgTZeOEu9oXgtCQL7tv0DPuMJ9eB79gYC5Wtr1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9217838},"main":"main.js","engines":{"node":">=16"},"gitHead":"194191d0652624ced94111c16eb45f2e8e84d56b","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.228_1776582480238_0.45815801067942696","host":"s3://npm-registry-packages-npm-production"}},"0.6.229":{"name":"iobroker.nexowatt-ui","version":"0.6.229","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.229","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"07a5ff3f61f1e495b1da4329efd900e481623cb8","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.229.tgz","fileCount":114,"integrity":"sha512-zxPCe5wjoCO5ncRWdvc59iwyat7qord0eQqEhVi6Mlp6s8JJdNYjSODksk1KBOoYVTJLQaD5RvkKw5q2rmLYgw==","signatures":[{"sig":"MEQCIHZwjpGtZC2BVi37NKzfFm9Ag+TAXWoVRmaOtziee2l+AiAr8wmudLFKoQndjtteHFKOa3Q8aw+Zoy8SN49qWm3RYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9225575},"main":"main.js","engines":{"node":">=16"},"gitHead":"b884391cae9344762b86054d60128d49bcd46a69","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.229_1776588555767_0.6069293097109816","host":"s3://npm-registry-packages-npm-production"}},"0.6.230":{"name":"iobroker.nexowatt-ui","version":"0.6.230","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.230","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"fdd5f887e239347b9f6d83d2f477eee04b2baf01","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.230.tgz","fileCount":114,"integrity":"sha512-h1kg5rogdAP61RP0PmloS1bspMavCXOp9dI0ZtwtzW0zmn9LEr9KuzDfsu/KPm74xrdIoYWJfQW88gDhds6j9g==","signatures":[{"sig":"MEQCIHLm+EklarLqawkTi8jNozpYBfhDNT/+1sNJlwGUoZAfAiAYDfS1BcTXR962YYPRml1U6zwCC5Dm2hTOZ5hgK57r2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9226300},"main":"main.js","engines":{"node":">=16"},"gitHead":"63b61fbf926062f88179a43eadd636f3e2976014","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.230_1776591632798_0.5525869975272133","host":"s3://npm-registry-packages-npm-production"}},"0.6.231":{"name":"iobroker.nexowatt-ui","version":"0.6.231","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.231","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"6e794ad6d931a4120c11007fef1e7c3df205b861","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.231.tgz","fileCount":114,"integrity":"sha512-BBXVjgW1eTB3W56aq1pQTHH4JhdZfvzlgOBs+a2ThS99T9iyoS0q8/MV6OL5UkSmzO9Xz2T1ZIloua17JebMJw==","signatures":[{"sig":"MEYCIQDgtiwraiYr1pdjaKIFrzWPepQsy2b+bsgzF8fzzW+fNAIhAKIo3lWWYcmYKPecROr5YSwGFVvJNc3TNwvKs+ydDKto","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9228668},"main":"main.js","engines":{"node":">=16"},"gitHead":"e782dfc17e9359051e93e1c557c3a06555388a68","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.231_1776631175117_0.7617189130716013","host":"s3://npm-registry-packages-npm-production"}},"0.6.233":{"name":"iobroker.nexowatt-ui","version":"0.6.233","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.233","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"1e8afcdc256922f60d7d772b5089948c27ea05ac","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.233.tgz","fileCount":114,"integrity":"sha512-CsyPjWT+9iPz1EwUQGsqugjMPeCodcrxeOHjWA1zm4fJFRslhu35Js6gciPRGuDrAiA1+mRkFY9F+i6kUtIa2g==","signatures":[{"sig":"MEUCIQCuqid+2JITPY6AzIMZRhwjgHmlvOyZk2g81zt7nTHD3AIgB+v695kwXhqlrjjEeBFKFFMB07vDREJdcsMxnmT4Su0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9227750},"main":"main.js","engines":{"node":">=16"},"gitHead":"6829c7d04e2251f46cd95340dfae5ceffbdb18d5","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.233_1776661995773_0.8430479968912128","host":"s3://npm-registry-packages-npm-production"}},"0.6.234":{"name":"iobroker.nexowatt-ui","version":"0.6.234","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.234","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"0062b840b7a33b20c12b9202c4b4c07c9359d2ac","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.234.tgz","fileCount":114,"integrity":"sha512-qXRYWeTwijq7a6Fn3yak8K5YH35bJvHK7E6psAm+qfmVzgpDN04JTOBAIQqmfTpup0IHSjtt6GFpLCzii5c+QQ==","signatures":[{"sig":"MEMCH1AulhfPBGPnnjZhneLFMqbyf5AtBbaO9J5aCBPQAQ4CIHeG5QJh7SVExEseljYYph4pjBDow3EBVemCSBVMSNZo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9228488},"main":"main.js","engines":{"node":">=16"},"gitHead":"5903e49f8dc13ccf0f7277b6a6861d9ca2cea4ad","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.234_1776679444368_0.8928778512239401","host":"s3://npm-registry-packages-npm-production"}},"0.6.235":{"name":"iobroker.nexowatt-ui","version":"0.6.235","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.235","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e23f69a1c554e6c263e0b04b1d2bd35d3f76120d","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.235.tgz","fileCount":114,"integrity":"sha512-rSee4e8KWDmxFV3BTiwSHGlsLgRNaUmHmK9u4loNK8+ljLXg/sSCHBKG2HSy88ilntmsJPqkjTgKqcEJLh5oVw==","signatures":[{"sig":"MEUCIQDmnzuS7gUbEX2BnqS//VLkwCtMbfRbkNioURESXj4bkgIgbZ7jcZ9/SlOY5AjSCp/qR8XtvuKrv12uNXAqGmYvYSI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9232630},"main":"main.js","engines":{"node":">=16"},"gitHead":"2277e239732ded4532f42fd3d7734ea40f635d8a","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.235_1776772596460_0.8333952952879908","host":"s3://npm-registry-packages-npm-production"}},"0.6.237":{"name":"iobroker.nexowatt-ui","version":"0.6.237","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.237","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f7cc92600f8436a721c00edb453cbbde52b2988a","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.237.tgz","fileCount":115,"integrity":"sha512-IgCDxZORv99Zb+6eIh0dfnTuD/Zy2b/yIQK5iTovI7qQHzsnQgTji/EDAeFDyYFr0YfuYfmngAa6/JlWchW8zQ==","signatures":[{"sig":"MEQCIHZgVGyzkUrouMtYyEbywC9LE1UuWAniflyYGW0eCPXnAiBMF4E3sA8lIhCsZlnGPn/j3jcQvo2/40FyTEtxwuIYQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9329044},"main":"main.js","engines":{"node":">=16"},"gitHead":"cb6272c86231bf148f4368d5595bc884a4939d7a","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.237_1776871665905_0.5650213119382406","host":"s3://npm-registry-packages-npm-production"}},"0.6.238":{"name":"iobroker.nexowatt-ui","version":"0.6.238","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.238","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"6681d305ff217ee9d4255be0ac2e9fefad33b72b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.238.tgz","fileCount":115,"integrity":"sha512-bnjYMhOJ7V/pwraG1/YESzAKvxPc3xomH8WQtW9/P0NZGlEEjYxjc56BJqSuG/IDCntRJx8oaQSegiY7GXa3ig==","signatures":[{"sig":"MEYCIQDGCMLN0Qe1F/Ombjn4PRHRLk2ahLycF9+fn24yYuwFeQIhAIcmNXmfKe1CfP/b/NvC6r7d1C6qjANVjTtkdcJzwguX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9339577},"main":"main.js","engines":{"node":">=16"},"gitHead":"86c03e559cd7c20acb5b6c78341336d75f5b3ac9","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.238_1776875267604_0.1783034526924998","host":"s3://npm-registry-packages-npm-production"}},"0.6.239":{"name":"iobroker.nexowatt-ui","version":"0.6.239","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.239","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"5a16290cd4436bdf9a8ac1292c65303414729707","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.239.tgz","fileCount":115,"integrity":"sha512-Hc09Ae4Wu6GHh3Lc9D6zX0GzSeI7fMzOV+ddC991W7w9v3Gfzc6GC1xPrloXSYFNxc28qprURHeDLb+pUskn5A==","signatures":[{"sig":"MEQCIEjIFoFbQIezMk1nASJOBm+rnwhrBzIv53TtY8xZUHUNAiAtgPZJqffkHt0sbh5m2JdZ9V6MqTstv4TlWNc5MTe18A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9343806},"main":"main.js","engines":{"node":">=16"},"gitHead":"baa2cf97c89eac98ba5e89b01dc100b2d6ed4358","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.239_1776886116232_0.3022349403640594","host":"s3://npm-registry-packages-npm-production"}},"0.6.240":{"name":"iobroker.nexowatt-ui","version":"0.6.240","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.240","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"4aa932c285c6cad4364bf50d60331f62e13bf2c5","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.240.tgz","fileCount":115,"integrity":"sha512-MTr8Pmt8tEGM/Ma7B01Y0v/S4uZUlh8XZxqGQ5rCdQY7a5lzmKAZ/S3jS6awTTpkzLZmXIzoKgYCupyBoD+eVA==","signatures":[{"sig":"MEUCIGax0CcU0BWglCfhm/a4XmfQ02lhZU0t76takejLPlmHAiEAwNblCaEf1qbgMtvwpPZGTiLpkMCRAp4GBM4FZG1VQxY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9345515},"main":"main.js","engines":{"node":">=16"},"gitHead":"1873e5d8d2271ee97f48e28dd09a7b23543200af","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.240_1776888132115_0.8641047944263112","host":"s3://npm-registry-packages-npm-production"}},"0.6.241":{"name":"iobroker.nexowatt-ui","version":"0.6.241","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.241","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"6ad25348382ff1cc9e669bffccc59f0f475423e9","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.241.tgz","fileCount":115,"integrity":"sha512-5Y29SmlcV8aQMVxGPs+wTHmdolhX2MGJmNgLbg4/+9j2ImX5DhEOHVLk9+sAv8mB17cbb+ZTg5TiMe1lhYD7eQ==","signatures":[{"sig":"MEUCIBbT9WpKOsuC8xzBkpWdivAg2v/UdY2gT5bU54LiA4IvAiEAut/QtqaYAkcrgs/Ci5JpZZAINYwJA6SuIMHhJJMtjhY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9360363},"main":"main.js","engines":{"node":">=16"},"gitHead":"dc0e74c3cea42fbf1fc5191b785be9817024aef2","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.241_1776937606234_0.6884628958368113","host":"s3://npm-registry-packages-npm-production"}},"0.6.242":{"name":"iobroker.nexowatt-ui","version":"0.6.242","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.242","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"abd7df0dde701c7959f8f7718a92b35690bea678","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.242.tgz","fileCount":115,"integrity":"sha512-tRdI8qiZW81TzZUNCoqPF1B5n8G4b7E3dL0rDy9059glJ7m4qHYnw0d7pexvmSqxHcf2dkAVL6q4DieKI2t9Sw==","signatures":[{"sig":"MEQCIEynuNGHTmolcHaiF6cSyDxJ/AL735LJh41skFIeM9CgAiAPB/GtY4UuwodsJG7z4GHhwYj9qZdHMd3zVQh/UB/wfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9346192},"main":"main.js","engines":{"node":">=16"},"gitHead":"dc0e74c3cea42fbf1fc5191b785be9817024aef2","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.242_1776945304294_0.5881555647263061","host":"s3://npm-registry-packages-npm-production"}},"0.6.243":{"name":"iobroker.nexowatt-ui","version":"0.6.243","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.243","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"c230d6896bd91db15c29b80f751c754ec4dcb7a2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.243.tgz","fileCount":115,"integrity":"sha512-3kr0LpMd8+D8sasBPMhAqMGzl2k0ClI8oVdtzNwuJJBFn0FHR1jJrowrk4jDO5mFsKGVqdpG5wrxHP13Tai5mQ==","signatures":[{"sig":"MEQCIDe/n4EVpV0AtZqpmOVSCZcKk4fko3vuScjvQw9aYIPGAiAmX0poxUyEXOO78f4G4Q9+WVuBWmqZVMiOjGU8SjkWew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9357393},"main":"main.js","engines":{"node":">=16"},"gitHead":"dcb2dc8be424d1911d35a3623c3deeef1d3abedb","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.243_1776948792259_0.6633552589214238","host":"s3://npm-registry-packages-npm-production"}},"0.6.244":{"name":"iobroker.nexowatt-ui","version":"0.6.244","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.244","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d3650f764ed691086dd0e9c2bd37096a782c6550","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.244.tgz","fileCount":115,"integrity":"sha512-hIpBgp/Upha8GFSQRuWHZr9PDIbYmbDDsYyj5XFdx2/jpjLDmBmYAVn6QyY/R6MFGGOTcbIT1efxliprZfSWyQ==","signatures":[{"sig":"MEYCIQCbhuUEnfWFjjcAYAprFeeXEIIpnoDw1d6F2HuTvZD/YAIhAP5Tv9kjwi/shAY/PzyPGkqPa+NgSXROF03bvTefG9bU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9347366},"main":"main.js","engines":{"node":">=16"},"gitHead":"4159b457482de43e3a119545dd50eeb228f602ff","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.244_1776950702707_0.0976190535154815","host":"s3://npm-registry-packages-npm-production"}},"0.6.245":{"name":"iobroker.nexowatt-ui","version":"0.6.245","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.245","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"446ba6cf39f6ffbb5db51312f04177e216a268fc","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.245.tgz","fileCount":115,"integrity":"sha512-VAAQTEI0kt+pIPZ09GOZ+aRT3oVUl6qTOehrOSwU5PD75w3q0jW9z/9X+yvXRuFkkrg6k6baqZi3/Q0wFNZ/Qw==","signatures":[{"sig":"MEUCICMYLGwjp/xufBB+kFV8Pr1+0TEdqlmr738h8tkpA79MAiEA4sTgMSEWpzwDswFV28gdoEWkBYC/IRyBjhK3+E0pMRA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9353287},"main":"main.js","engines":{"node":">=16"},"gitHead":"b40713db61d2eafc8a9b7c60542c287047a47bf4","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.245_1776970409422_0.010467241959847495","host":"s3://npm-registry-packages-npm-production"}},"0.6.246":{"name":"iobroker.nexowatt-ui","version":"0.6.246","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.246","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"fb35e665e3b0d431d79ac71433191d1c0a617637","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.246.tgz","fileCount":115,"integrity":"sha512-5I2J2NiftJcTE113uqyWaRciztMyorE0rrh12kcfpaqdPMvO6Biwptm282FW+ylwjLvwtQdZMEJ6XWaAHhtjfA==","signatures":[{"sig":"MEQCIGf8GcuwTNneUqvRQmmO8S8RSPmXEK27553axjK0DKl+AiBeeyJSVrNPkcJexpp7auj3BT3mjyl5a+jQX/80qdc+uQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9357698},"main":"main.js","engines":{"node":">=16"},"gitHead":"d976f482444932ee3e779adb56cac1e1b3c1be2e","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.246_1777031401503_0.2368343281629619","host":"s3://npm-registry-packages-npm-production"}},"0.6.247":{"name":"iobroker.nexowatt-ui","version":"0.6.247","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.247","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d8437c78b940f08b39450b69dfa767616c50b579","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.247.tgz","fileCount":115,"integrity":"sha512-C7v2atmSnki+0Mx8+crep1nUqZoI40mehfRvtmdb+8jLDozqL+skEhjzoqF0cYE7cDTAj6NDngh35+SG1ENUfg==","signatures":[{"sig":"MEUCIQCfm51xBDjgVrjcrbyMVjMQlA8192H1h2h/vVS+U04ObAIgevWBjClcV6jpXAprZrXD+mud+Pm4PhfxLmexGC8yDiw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9366332},"main":"main.js","engines":{"node":">=16"},"gitHead":"f613f12f678cd037ebe17b2d04d03cd0190dd401","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.247_1777050356452_0.09055780609749742","host":"s3://npm-registry-packages-npm-production"}},"0.6.248":{"name":"iobroker.nexowatt-ui","version":"0.6.248","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.248","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b968b70cafccc11de6f70d0e3b0fcc7a6ffbcaa2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.248.tgz","fileCount":115,"integrity":"sha512-rEzHqq3B/zpMSaaWwk8cNDjTxwH/hMd5wCFPR0a5Rq4qbQKpb2UArxizsfU0WJGkki/9EerQYNFLCEEudGIlmQ==","signatures":[{"sig":"MEYCIQDWiWfW3JfM3boS8O6RBGrBLEa2ah+CCg2qiTB4idqknQIhAOf3IRBhRF3NYVaQocbYsAFPmsvnxzzUbp/6vBf/tMX+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9369968},"main":"main.js","engines":{"node":">=16"},"gitHead":"ff221042ce1744549f19c0e7539f125d03f84ae3","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.248_1777055330040_0.1644097530410391","host":"s3://npm-registry-packages-npm-production"}},"0.6.249":{"name":"iobroker.nexowatt-ui","version":"0.6.249","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.249","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"5a3359fd611d4309bbd45f7d420347f115a974ce","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.249.tgz","fileCount":115,"integrity":"sha512-46urgF34sTPfdi9KoH6hedgDwL8LOVIkis/fhklRSTRJLaGl9FB2u9QGVR5GXPvZEk+JqdOHGZyXUFaxM9zU2w==","signatures":[{"sig":"MEUCIF73cdUQzuNwosof8IHsaeohN4DG2kXRxC1n8pSVOkKSAiEAoZTyK2+TY+/KnZrRFirePrybX1sH6Fev/YDB+SErtao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9374101},"main":"main.js","engines":{"node":">=16"},"gitHead":"ff221042ce1744549f19c0e7539f125d03f84ae3","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.249_1777091229123_0.4761450399737108","host":"s3://npm-registry-packages-npm-production"}},"0.6.250":{"name":"iobroker.nexowatt-ui","version":"0.6.250","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.250","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b6ba25fe92a370dd7919cdea871c719e565e49db","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.250.tgz","fileCount":115,"integrity":"sha512-KpBQ0X1xm77wTdfxVFSNgFntVqu27fq2WLRcIO4N1EVWCc5Wd8Iq7C9Weg1eJq5TSDIthEnx3UZW2UM5w5saAw==","signatures":[{"sig":"MEYCIQC9d5b9SMzFoCO2BTomhtL4EZRDMcxGWheVo4Jt1a3WmAIhAK4fDEq6OgABuBu0DpToUerxjOdtlTSWITITmQHb/DCF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9387008},"main":"main.js","engines":{"node":">=16"},"gitHead":"6ad98b78e4eba18438c7652ea782578446e3cb43","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.250_1777094803932_0.5728147318244088","host":"s3://npm-registry-packages-npm-production"}},"0.6.251":{"name":"iobroker.nexowatt-ui","version":"0.6.251","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.251","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"dc1075e1dec8fc0a91716d75f4a1a6e2a590848c","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.251.tgz","fileCount":115,"integrity":"sha512-VRkK/glqmaou6XSvIsZL5FxRcElCN9+7WJ4qbT59gd93MHT8hKr31Eeax6RpebvwZwnlEjxknVUHIX6cBK5Hpw==","signatures":[{"sig":"MEUCIQDaShCp4OP3i4Gq06ZbmCS7g6wmziOzrGWOmtynie4kUQIgNjFYlW4NDKxcHB/WBWFR4nN/J7MX/NBbISGbMpCQLwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9530766},"main":"main.js","engines":{"node":">=16"},"gitHead":"858c5acef52f86895f7021fd52e040154e5950ff","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.251_1777140435487_0.09358810570026987","host":"s3://npm-registry-packages-npm-production"}},"0.6.252":{"name":"iobroker.nexowatt-ui","version":"0.6.252","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.252","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"7ef602a7de280fc1b0aeb591d905fe9521fdc224","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.252.tgz","fileCount":115,"integrity":"sha512-yxAVG3FCHCND7bs1cQksxajzIxSzcBcjEXT+t7CrP+Sp3HCkmPBaF0VpRdyoCIRtm2N4vSAALuvJdII3B6Kfjw==","signatures":[{"sig":"MEUCIQCIGgwZUR5u55JdVd1maUJlkcJh/+KoQg3ortA/NDcAiwIgLEu9uBI0IOIebdgS+y5Ao0dBMAzjIrKRqLV20dKafIU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9539421},"main":"main.js","engines":{"node":">=16"},"gitHead":"d20bb5dac27bbafcd1d86d1f936b78b25248d03b","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.252_1777147736174_0.6219072163386485","host":"s3://npm-registry-packages-npm-production"}},"0.6.253":{"name":"iobroker.nexowatt-ui","version":"0.6.253","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.253","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"0749d6e7c72f5062e8a3f5995e27d09f674ff354","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.253.tgz","fileCount":115,"integrity":"sha512-vM5PDRKb21aCYaQfWfGRzGNQf01x+2+t4q1yAb0/PTXPg6YOnj5cSIEkiUSgCetuEeXf+jCVY7sfaC5ENAPI2Q==","signatures":[{"sig":"MEUCIQDXaeKvduQNDN7pdtEJ/5YvsDYfkftDyCQ2cCnlzJEVeQIgL0rO1ksOYtHyYB5aMb0ee2bfAv9pGjR74diaEXl7cLU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9567336},"main":"main.js","engines":{"node":">=16"},"gitHead":"30bd374fc181db74931ac9927d33cb4e708dd7e8","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.253_1777181363715_0.9232465045354217","host":"s3://npm-registry-packages-npm-production"}},"0.6.254":{"name":"iobroker.nexowatt-ui","version":"0.6.254","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.254","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"9effe4e7eca9a7d67249570bcd232deccebd2411","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.254.tgz","fileCount":115,"integrity":"sha512-8MPmwrR2XzAVrUySXF7HBfQRh9w+QxsrCkuvsVFkxCziiakTHIq/4TCx8xQCmx6W9Kb/BZF64SSJp1pMg8p2FQ==","signatures":[{"sig":"MEUCIGleBdOk8jApQ/qd0H68FSD73fSdTszx/2UD9FkzdRXkAiEA84Pt7HjMyspWxkY3gsk6xT0DCoNBWmGIL4Xvt6JymUE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9572279},"main":"main.js","engines":{"node":">=16"},"gitHead":"5797960a02c676bc2006402622e7277d1c127212","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.254_1777188027685_0.04351328342493477","host":"s3://npm-registry-packages-npm-production"}},"0.6.255":{"name":"iobroker.nexowatt-ui","version":"0.6.255","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.255","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f05b7b2e7633787e7cf8cc242c5d437212649cfd","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.255.tgz","fileCount":115,"integrity":"sha512-DCnk9ZfxyrvTArzI7pYhqoa2mJAGCKnuMpcsaYBY1azawZcmkYpk5UscidBaOIQDxca30kNYT4Up78Cf8pvcBg==","signatures":[{"sig":"MEQCIC42ITM7EbGeHdq4PpfM/E1gv5m9ipamNAHsquCVpjrvAiAPIxyA3bup429neq35eUJA69cfCld/QotD6ByqfGWCSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9580714},"main":"main.js","engines":{"node":">=16"},"gitHead":"99ea24941b1d8657889bfe016952da0dfa05d401","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.255_1777190705080_0.6902835124738886","host":"s3://npm-registry-packages-npm-production"}},"0.6.256":{"name":"iobroker.nexowatt-ui","version":"0.6.256","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.256","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"5eb8c24508b66dfd76d1aea210684ce692349bb3","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.256.tgz","fileCount":115,"integrity":"sha512-KkmwloxFepONIHEYqXafBbAo9MvW9qKtPzG+DWJTjAB98ztR6UQikKFxpCGnedXe7GfjFWQMSfW1QwkPCLsXpQ==","signatures":[{"sig":"MEQCIFHi4RSTO1QFocZG4b1yCQvYlvYydl//IETmzMstrBfNAiBhN3ljEZ9UDO6KncX1D5Hnt2RTrBSryxK2MZxRSVQFcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9614772},"main":"main.js","engines":{"node":">=16"},"gitHead":"14cc5194a0b1857b13a48f967b97ea67401d5012","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.256_1777216584520_0.16130865788218007","host":"s3://npm-registry-packages-npm-production"}},"0.6.257":{"name":"iobroker.nexowatt-ui","version":"0.6.257","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.257","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"fe2375c6af01ad1e41237801e418f2df2bfac7a3","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.257.tgz","fileCount":115,"integrity":"sha512-ndrpH08RL0cH2GH6bOquPn3FL6einsZkOb2kxUQElX2Vf+suNyEmtCOec5vZqMbesl7V0/PwUJT/YFyGsOL77A==","signatures":[{"sig":"MEQCICaCXWqeuKE0zxpoQ9g2bS+AUGEMeYK6pFZmOqM+hoAtAiA45XoCjDOgZtv8Lrea2xaGQRpTJTUPnRvGmPN/nbTuXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9637650},"main":"main.js","engines":{"node":">=16"},"gitHead":"4de3e18b39b5858cd2dfc81612987dd32498f75e","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.257_1777288932008_0.5618842559018766","host":"s3://npm-registry-packages-npm-production"}},"0.6.258":{"name":"iobroker.nexowatt-ui","version":"0.6.258","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.258","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e3b820f2e257a2d7dc28335e133227abb6625c80","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.258.tgz","fileCount":115,"integrity":"sha512-2NznIVGHjTs3+1g/MV6lU8WrSvIVbuku5YU0+RETVRtZvifXFqi74J9I1TAXOrQwvZHZL07E+Q9zl+dZHfy3wg==","signatures":[{"sig":"MEUCIQDvlq/G6MNPJLEFBJa946Rc1OiuA1HjXT7cazNhsk8JPQIgcrIdJOLSm+1Uce3+UOXvvdpL2a5FE1IYT2lIqmzPKDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9640599},"main":"main.js","engines":{"node":">=16"},"gitHead":"4de3e18b39b5858cd2dfc81612987dd32498f75e","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.258_1777293129812_0.06001891882307486","host":"s3://npm-registry-packages-npm-production"}},"0.6.259":{"name":"iobroker.nexowatt-ui","version":"0.6.259","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.259","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"5ae16a503c921b89eb05a3ef0c0c46992389af73","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.259.tgz","fileCount":115,"integrity":"sha512-mFse9Ju+Q0n06N1Ers3ba+aC0CyZLe9pbVzwbWp/6aVCMMVur8r6tpKOAosFicvx3icqfirMqxBommPbia6gKg==","signatures":[{"sig":"MEUCIEmOICgQd58Y8IXt9R8zIBWFmAxFhxhr0rHvAIrRXogTAiEAjXzrOAnG74o3J6vAPLCk/GQDiNzMJCJGGNANMFVFQh4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9642645},"main":"main.js","engines":{"node":">=16"},"gitHead":"b21b2727f00e714b82c214a26297a491eab24187","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.259_1777295526026_0.8785651123413434","host":"s3://npm-registry-packages-npm-production"}},"0.6.260":{"name":"iobroker.nexowatt-ui","version":"0.6.260","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.260","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e4c51b87c93765352c042613e464db3bd9b17cd4","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.260.tgz","fileCount":115,"integrity":"sha512-T7Hv5+Ly9ycojsmcqZH8VDIuX33wWlZvkRHJahhNUjWSrj495k/MLPjQFn2aj3IV9KFNc6bwISpF/I1CfZXcag==","signatures":[{"sig":"MEYCIQC2lcazMql2XQg+L9al8J9taHWIKvsBWZqXDRV3Agi2UgIhAINYJVXQa+RMjig7JTTmM2pY3WfH1D9RAxYAKmu/LVLX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9649001},"main":"main.js","engines":{"node":">=16"},"gitHead":"3d536b465987e81423a30e64f18328cd464f86e9","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.260_1777385484168_0.15229096748265447","host":"s3://npm-registry-packages-npm-production"}},"0.6.261":{"name":"iobroker.nexowatt-ui","version":"0.6.261","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.261","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d389d3a557c4ad98ccfc6bb90e0e73e1cd446160","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.261.tgz","fileCount":115,"integrity":"sha512-Jl0/RC0r+2W3UPbujXnzoKjGx86rm5suxs0gm8fO3lsADIo9QZFLppZfDZnzzoPZjH3D9vuYdIPXLwHmzZH8Tg==","signatures":[{"sig":"MEYCIQDH6Cd3Dt6KpCa0GK8MW4UZX3btSqeibaO77RGfczq4VwIhAKJ4QJFgnYW6F0Wz4H6EJMI5IPB/q8rHrkXrWUn6R5ED","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9655699},"main":"main.js","engines":{"node":">=16"},"gitHead":"c6e60b73256997a7443bb5fdacff93aa58b482a1","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.261_1777404463293_0.19219648598905104","host":"s3://npm-registry-packages-npm-production"}},"0.6.262":{"name":"iobroker.nexowatt-ui","version":"0.6.262","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.262","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"36557aafcbef0f3b3543e9746fbd7a550d406913","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.262.tgz","fileCount":115,"integrity":"sha512-KhntzYvdrug5CyV3GknXQljcyCQHE0HlrAk8tF8kCz29XgRAkM1ezIsQXuuxFGwsCDBBlj9+IRNFw6teZAWOqw==","signatures":[{"sig":"MEYCIQCqLq0bowiNFntOAmYZMwHgMv4TvgAQamccb/fz6kS0YwIhALOXF1RgoakazpKY4DYLjjgGwB/gJAttt/YrFzTaha7c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9661567},"main":"main.js","engines":{"node":">=16"},"gitHead":"cea520fdb13e180656a210d6e083af4d5221e395","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.262_1777447462473_0.9504116496530961","host":"s3://npm-registry-packages-npm-production"}},"0.6.264":{"name":"iobroker.nexowatt-ui","version":"0.6.264","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.264","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"0738782eacb50a74e73f5b0f1ed0bf94cefcefe2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.264.tgz","fileCount":115,"integrity":"sha512-BD6HVr2p3AKaW4K8+zSAcvjsKzCS+IMvPuu0/aNZY3Z0KgzFxCVTnm++fdZeGMvIZ3B4jkAI1bV44za8yxf5sw==","signatures":[{"sig":"MEQCIBBEzF6bRexj/E9Ptcf04fRWAkcXljjQw2J5qZl5AVKBAiAozlAhqSbIfWYXmRJo4VMsH4mx0aK5nLuqAhC79VmaiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9676614},"main":"main.js","engines":{"node":">=16"},"gitHead":"8e5607cf9f651d5fc962c5dedf7bdf6ca02c543e","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.264_1777456611680_0.23446890837940892","host":"s3://npm-registry-packages-npm-production"}},"0.6.265":{"name":"iobroker.nexowatt-ui","version":"0.6.265","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.265","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"29d7b2eb3de67acd523636fbaf25604d26c1827a","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.265.tgz","fileCount":115,"integrity":"sha512-vDNVHN5xjdXRpGPUF52Axk4C/u7JSxfHtot3QDohxvTh77e6yfGou5mjIQUUKuY5+ms4qS27w9zAEGwp4trV+Q==","signatures":[{"sig":"MEUCIAZPW/oVyREnwOdO3Wsxm2RFSAE1C8BZS7WQo2eti1bDAiEArfJke6Zb1fB5DHHJyV8rUx09Zy55yDTIAZVD9NZ7Ab4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9683864},"main":"main.js","engines":{"node":">=16"},"gitHead":"8e5607cf9f651d5fc962c5dedf7bdf6ca02c543e","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.265_1777459686919_0.19757566479639999","host":"s3://npm-registry-packages-npm-production"}},"0.6.266":{"name":"iobroker.nexowatt-ui","version":"0.6.266","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.266","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"ae67fe270cf6a6636c679657a159cf61e4df02dc","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.266.tgz","fileCount":115,"integrity":"sha512-aJ54XAH1uMM6cHZ7dAvEQoCSDbGEB6A7+XVpds2mOy8HB601Hpl5+aip2QekTMntVh50hIORwnQSixM68teEdg==","signatures":[{"sig":"MEUCIQCRRydtEyFM1mncTTm+e1xfTlgRawlInZKbtl1vG6/tcAIgElpoR353m5zPcrEnPXD79WTyz47xTTVpJHQ73q0F+qk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9677058},"main":"main.js","engines":{"node":">=16"},"gitHead":"321c091773414d3475e2c24471cf7c08cad221ee","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.266_1777462532773_0.9904831436676722","host":"s3://npm-registry-packages-npm-production"}},"0.6.267":{"name":"iobroker.nexowatt-ui","version":"0.6.267","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.267","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"a178a49ee79efcba79ff7a48975bc2d929c8712b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.267.tgz","fileCount":115,"integrity":"sha512-usjWx4RjDvwpNfyzTgBMqLh2GUOfyw6JEoeBjdiVQiD28+8JcFkLUQZyY+NOiPhq6kLP8IJcy2QmGijgMOX6Eg==","signatures":[{"sig":"MEQCIFBIUWV7bIti9173IVaY+AlLQ+SxBZBUExSHs6e83Y0tAiBph+6yD0by1T2n7bNgGOd3yenamnTRiFr/tDu5zTr5/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9689318},"main":"main.js","engines":{"node":">=16"},"gitHead":"83da36d6746546da37f1e884095e339227af8f27","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.267_1777466503142_0.20667475194130103","host":"s3://npm-registry-packages-npm-production"}},"0.6.268":{"name":"iobroker.nexowatt-ui","version":"0.6.268","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.268","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e150f8460eeae79de194babff1be0d7717437ec3","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.268.tgz","fileCount":115,"integrity":"sha512-wYxkbEBsRqVukYJVra5MTUa/A+HZKoa6UCvLdXJVzOHVj1/GZUx7p3JST5+5x5CnBENEtA+bD3B1dPdawVHDmA==","signatures":[{"sig":"MEYCIQDvR7E/3AeRUvvLYvrna7hlMa8ok5w66UR/NaF5IO9HvgIhAObaj2e9reO4SuzOpt2GZmQA8ZZW1WkasGNhzCBiSj+I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9704108},"main":"main.js","engines":{"node":">=16"},"gitHead":"83da36d6746546da37f1e884095e339227af8f27","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.268_1777477462230_0.6551078189577069","host":"s3://npm-registry-packages-npm-production"}},"0.6.270":{"name":"iobroker.nexowatt-ui","version":"0.6.270","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.6.270","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"a794b21550c8888752d86adb6f91f6aee9364db2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.6.270.tgz","fileCount":115,"integrity":"sha512-ZHGDRPYWDPBMbDUbwAqfxZlsZPDPJH0o5EQDentl6Z4g0T2lSjyCvRUeFed7rkYIOHhywplE6XoxRsf1O61NiA==","signatures":[{"sig":"MEUCIQCdLPP4JOgO7tX6sRKyEOf291HiTQDOy9WpVcOdEQeI8gIgFwtF+Uf7XxqgPUvBVU5P2jN3CV8nCw7ngyK6DwcVVYs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9708957},"main":"main.js","engines":{"node":">=16"},"gitHead":"9da4c69226744ad142166860145ce414d5830eeb","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.6.270_1777488842891_0.7533608139287886","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"iobroker.nexowatt-ui","version":"0.7.0","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.0","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"69309fd039acbb146d187d27e97f16e7d55131fd","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.0.tgz","fileCount":115,"integrity":"sha512-BKJMWaypZOCnpztgadGnIxfuLbAERLSFQYm/8+sBIgTfNOlOgxOzvK2bwuCZx3durOr3eHTgxXNxTZvjWzXq9A==","signatures":[{"sig":"MEYCIQDAWe5KmeVkKZx6KKKzvk/3yU8BGygfbbxaz8PVWoXutAIhAKBGB4oD16nRd53qbsgkq2xHgOxbZwVMgXGPn5fU+1Nl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9662412},"main":"main.js","engines":{"node":">=16"},"gitHead":"b26cff7567684ef50cf71719bbeb1a54d2769d93","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.0_1777493651243_0.16315626915828174","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"iobroker.nexowatt-ui","version":"0.7.1","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.1","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"00bdebcf668eda142e63fefa9dd4458c1bf07297","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.1.tgz","fileCount":115,"integrity":"sha512-Abj5V+ikd/LILkRzEBsoOUmJtAWsK09ilx7C1mXXYUtd/mgoViyDaQV5cAJcbwgyVIb80lRp9chyl3T2abxgRw==","signatures":[{"sig":"MEUCID8jK6Us9EEv21B3KS5kF0x9keU7qo2aAGpfEOVEbaaJAiEAp2RQ8+HmpKpj8jcrzzLY81uxcFdBjdVXRlslJgEV5/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9666208},"main":"main.js","engines":{"node":">=16"},"gitHead":"ee6915c20dc087b7ae6167aa33ba331874608d62","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.1_1777520918863_0.09732347301945854","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"iobroker.nexowatt-ui","version":"0.7.2","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.2","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"463b829ff3fe8a683229e83f89f10fde52a022d3","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.2.tgz","fileCount":115,"integrity":"sha512-rIEs7jnZ5f7sJM9p8OgWal6SPyAkOxJrs1/twGIypHzZiIQBpuAJindA3rJn5hM8lQfmjk/tTc87w2ElwwKRAA==","signatures":[{"sig":"MEUCIQDdnosrWLPIwoHEKhSaBu3gCU0C+Dok6DHhD2q/l5N0GwIgTt53TmE/w7oro9z4KPwWEU4Tw+0nfaeRoCvm9ne3clo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9690973},"main":"main.js","type":"commonjs","engines":{"node":">=16"},"gitHead":"d054628c73f468228bfddd3756d5689188c4eee4","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.2_1777542462911_0.5835716858582798","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"iobroker.nexowatt-ui","version":"0.7.3","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.3","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d9cbfa399b4b4efaeaf99177e0a95639b7c97f06","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.3.tgz","fileCount":115,"integrity":"sha512-LrBKw074UFcPNx7cihe1kbNYHL4V1IIteMnHtvt5UVbBo2kvNZi/AS2zU1w/yIf67aQ5L85iALgz42jOcPkKoQ==","signatures":[{"sig":"MEYCIQD8MZf4FctTBITr724BbyWKoZra1d63AhMntdcPJGJv2QIhANkj+fOVeB2FGdFo0vUxEb6o2sru9mIgLx/CraBqbarm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9694771},"main":"main.js","engines":{"node":">=16"},"gitHead":"d054628c73f468228bfddd3756d5689188c4eee4","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.3_1777545406223_0.39535623783006857","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"iobroker.nexowatt-ui","version":"0.7.4","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.4","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"1d61518c4cf30b7b82a41029f0b744da00998fec","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.4.tgz","fileCount":115,"integrity":"sha512-XrZnAitDMK7D+npkeL5O9W/vaZl+zvrmp2qeSth8KIfJ8UsdcXIiQL+Gze5po8QB0aky7fIhpUxprbDnGBehmw==","signatures":[{"sig":"MEUCIHrbXQrxKEo1M1CQbZf5+RG09n+/x2Ig9KT3V4R9073PAiEA0FghDHj5YpPpHBCM4aAXoayQSRXWv6meBT1LHCAK+Xw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9704293},"main":"main.js","engines":{"node":">=16"},"gitHead":"d054628c73f468228bfddd3756d5689188c4eee4","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.4_1777559189675_0.14440884801606257","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"iobroker.nexowatt-ui","version":"0.7.5","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.5","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"48d38623ac793d2f7e9d3141b2cf7a8b8bf4b214","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.5.tgz","fileCount":115,"integrity":"sha512-EUjZgzA4UtBhFaBYkltJv45MZSdRt+Fat714su1xTNq5rOdn0VAYKXib/B454w50B0jbgzKyiysb6tttl94PWg==","signatures":[{"sig":"MEYCIQCPFLYKl7vFJcrqaha11CqAtKS+WUtd6qV4shlzoVLILwIhALuFydtyZMCv956DdmK5uggrYAeg176qxSUD3klkoN0V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9707426},"main":"main.js","engines":{"node":">=16"},"gitHead":"ee6915c20dc087b7ae6167aa33ba331874608d62","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.5_1777577620347_0.2182346500330008","host":"s3://npm-registry-packages-npm-production"}},"0.7.6":{"name":"iobroker.nexowatt-ui","version":"0.7.6","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.6","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"83aab9934746aaf54687fed8e26877e9307b7ec1","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.6.tgz","fileCount":115,"integrity":"sha512-JosprNswCw8MiYUyGYXpy7Xf5HDNKFMfA3Yv/4nvK8Uqbx/Bn4m+FJvEUyvVZkWiiC5Xuph+H7LdyC0+y4I3mw==","signatures":[{"sig":"MEQCIA1+6zmpzrdnMQRB0GZ5OeBb1/vlnrGqmWenSlld45R7AiAZ3k3EgxGfst9BAfBdMOGKVrWe0oi+BlR1uP8s2EpD4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9737053},"main":"main.js","engines":{"node":">=16"},"gitHead":"95bdc39d07f2fc0e42ca2619d60a972f5be33ee9","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.6_1777619340667_0.7253783227445985","host":"s3://npm-registry-packages-npm-production"}},"0.7.7":{"name":"iobroker.nexowatt-ui","version":"0.7.7","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.7","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"567b2c7e1d6a1ac2f2f51507f05a11d0fd4d0682","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.7.tgz","fileCount":115,"integrity":"sha512-xAEp1MxmdkWGHo5f8TEY4AcZnOdWRvWyGcvfKEwwyfZ40wNvk0jBkvQ6aYynXXnq9j3wDm/fdLT7yQpQfl2xEw==","signatures":[{"sig":"MEUCIQDgwrV0TfPExLDTg76zcA4kCQKsUVVirrtoFUQ8skKgVQIgFFGEU+bLiwgZIySTO756G5+SW962A04olC4dZfRfxCA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9753061},"main":"main.js","engines":{"node":">=16"},"gitHead":"dab385ba98a928d789e6c6794af4d0e2f86743c6","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.7_1777622883503_0.9783922862841401","host":"s3://npm-registry-packages-npm-production"}},"0.7.8":{"name":"iobroker.nexowatt-ui","version":"0.7.8","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.8","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f531feb4823d627ee7ae7390b7844acff1d43238","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.8.tgz","fileCount":115,"integrity":"sha512-fYNI2a8DMstxvkkLLixrWEr2MGCucRzVCQR1kLSfZtrXunY1ZbAsMngQS223yPRVZK3wu97ihlDQe6u2mon3wg==","signatures":[{"sig":"MEQCIAzfB9MQcC9ANvOf78GX8kwHhjBhBAc+dnofivFJXbXaAiB0Q7/LWSRN4ipd51QY/+Vh7SgK/d/vbWsFefzivnjVbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9760599},"main":"main.js","engines":{"node":">=16"},"gitHead":"dab385ba98a928d789e6c6794af4d0e2f86743c6","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.8_1777651255458_0.3622683657175605","host":"s3://npm-registry-packages-npm-production"}},"0.7.9":{"name":"iobroker.nexowatt-ui","version":"0.7.9","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.9","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"351738f9a81e3d7c857c46ff675c9960eba24dbd","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.9.tgz","fileCount":115,"integrity":"sha512-rOkyisBJ5PGy/Ou9GKSrtS6Xkt4SqqgskDoa2kcB/pq9KM4R095DcOe+qyZbvIX8QW2Kg97Kut4NG0/p15LNjw==","signatures":[{"sig":"MEYCIQDnlfo2vzZQvJN5BqZ76G5foD4Hdt8FWwAsxt9VnpNfJAIhAK9dQ0jPkGAs81DL+WDgxoj+CbIFy51Re5P6G6TLfr25","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9782318},"main":"main.js","engines":{"node":">=16"},"gitHead":"7f45e69a21b90622d63b83447944aa6778dfba6d","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.9_1777700484839_0.05935464381937683","host":"s3://npm-registry-packages-npm-production"}},"0.7.10":{"name":"iobroker.nexowatt-ui","version":"0.7.10","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.10","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"fcbdceab9b79642373f2e31516ad82dc8d757a7a","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.10.tgz","fileCount":115,"integrity":"sha512-dOKS2oSMHsnKtqng4vAJJUkrY7o85gjOAlOr7P3+JFuFxK02AuglC4HWUVaIgd837nQiPlaADplxGyyST60SNQ==","signatures":[{"sig":"MEQCIGRihnvFXyNsieYnremW9MBk4C9KvxMphI7jymXY6mtyAiAYzuyMLFlLrk04dm3GPRwswviI+JwSu/3EijiHLN4wkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9762268},"main":"main.js","engines":{"node":">=16"},"gitHead":"4cb5253d4df2a18f76f12d7f65e1218cb0296367","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.10_1777703170762_0.9302298808798883","host":"s3://npm-registry-packages-npm-production"}},"0.7.11":{"name":"iobroker.nexowatt-ui","version":"0.7.11","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.11","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d4c21e776e4e565290eceab55c87793266fcdfbc","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.11.tgz","fileCount":115,"integrity":"sha512-+gTjo9tTHc6pTUCrsj5xE9JAJxMonGBLvwFK+evg/DwqLg1qjUg/PEYZrNzPCK1LrzRw5EhJ5mJs9gPkWVQXXw==","signatures":[{"sig":"MEUCIAtnsM2L3QPD0us+mETo8K/BqCvtMDB8zatJI+f30WUfAiEAgoB2Vi+OlmN9ugbV8/04w7acRG44EoX4b2ZfLH790Ys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9768965},"main":"main.js","engines":{"node":">=16"},"gitHead":"0f159bc617846fdcab145e4157ab4e46252938ed","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.11_1777706217346_0.9203660291144309","host":"s3://npm-registry-packages-npm-production"}},"0.7.13":{"name":"iobroker.nexowatt-ui","version":"0.7.13","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.13","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d2434d8bdc944e59376b5444af3c2e7a4eb2bd41","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.13.tgz","fileCount":115,"integrity":"sha512-9otF52EDq+xfEQ0ESvNGuM0xcDTfBAaTaxcf2LX+0qZpi6l7EzjM8V7iOmY9js4Tdag6kwxT3OGGlcqHc5gOzg==","signatures":[{"sig":"MEYCIQD9a4KIKVIUdJfeCdoRFyQQvXRAL3vEP67h6F0KiRMMkwIhAMKq6m0lMqzSYmY+snMHeE9QmxcWkKtKLwIoeRoU1PgF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9773437},"main":"main.js","engines":{"node":">=16"},"gitHead":"df043c7d90beea72994200b23a935a904271556b","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.13_1777797241418_0.08164473892561896","host":"s3://npm-registry-packages-npm-production"}},"0.7.14":{"name":"iobroker.nexowatt-ui","version":"0.7.14","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.14","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d1815c2ec5b33d374623164d3026e69ee26c6b8c","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.14.tgz","fileCount":115,"integrity":"sha512-vm48OahlO8n7bYb2l8/gxZt8VmzxZkLclN4OkhgZNpFn3sezh43AmA+jCpjtNS133XVhV++K7ZZrvMIR0Khy8A==","signatures":[{"sig":"MEUCIELO5+7vSGnFy2bTHlZUTckSCXduoEfbRFJgiudCBZJ0AiEA5CMC31lhX51BSw29Hw1LJE0wkyFkuNFOCyqGOJSBa0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9798602},"main":"main.js","engines":{"node":">=16"},"gitHead":"36cc1379cf195c698b836d1aeca920f9288d1673","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.14_1777822982557_0.5616095619511721","host":"s3://npm-registry-packages-npm-production"}},"0.7.15":{"name":"iobroker.nexowatt-ui","version":"0.7.15","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.15","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"0d9f313ae63a24ec0efefd515f6be5c266db6b2f","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.15.tgz","fileCount":115,"integrity":"sha512-tjOa5PikpeXc1v1b7GbLJpPU/sAvKjoH9krJSHjjNh9r8C8UX1ClbIRHs2l6s4f4TRsE0SiPVE2emLEYSc0IcA==","signatures":[{"sig":"MEYCIQC5i7yXCnVX4tBABM3O5YU5tn9TkvMCs/QBmU7xVRg+bgIhALkV/jWHIT3kpar4k0ZgRfSHHrIvxrvxUbAChxENYCv7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9799906},"main":"main.js","engines":{"node":">=16"},"gitHead":"1ae710bb13241f3286fb8ee5d0551fae9c288311","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.15_1777828120322_0.8973117426951338","host":"s3://npm-registry-packages-npm-production"}},"0.7.17":{"name":"iobroker.nexowatt-ui","version":"0.7.17","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.17","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"6a444d446bf24ed80d49d482cf5cd5db6a6aab64","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.17.tgz","fileCount":115,"integrity":"sha512-yUwU0tKPuPiNkjKNZtsmlS/Th5Ia8KCQH1xYTOYHBB8rGcuvcdD8s6B7K9MzumP5P9cIjTB/5aCD8hrqGJR4AQ==","signatures":[{"sig":"MEUCIQDkuSyK5qNh4IjmqRfHH5Ov1cDtU/GwqbuMg5OPpiLTKAIgONMS9PorntceToNgtsOEG2xSyhNMZ+V4EmzUP5icGSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9804278},"main":"main.js","engines":{"node":">=16"},"gitHead":"29cf9f9d8ce379f867ee6ab54d90686195cf33a7","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.17_1777998190526_0.018040041807435125","host":"s3://npm-registry-packages-npm-production"}},"0.7.19":{"name":"iobroker.nexowatt-ui","version":"0.7.19","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.19","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"cfea0102f6ce8a2708878c66824f2d3a2f7151c5","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.19.tgz","fileCount":103,"integrity":"sha512-NM0ZfaRmDImajyqT2/MVjW+zzE3vM0F6UnFDuLVKUOI5vekUSyAx/Vmb9idCumolQI3vY/6OlHwiY6hlI+JoOQ==","signatures":[{"sig":"MEYCIQCwx8kiCv2vGPpCJsvsY8DrhHh3s+KRJA/6Ng8YBsfFCQIhAN3k5v2XfuoGbyQ6XoMLGam1NN/Wm7sBrHEucC6hKG/i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9711760},"main":"main.js","engines":{"node":">=16"},"gitHead":"09890dc434891d2640dd2df62aea8ab1e5aca029","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.19_1778159343838_0.024206135244529525","host":"s3://npm-registry-packages-npm-production"}},"0.7.20":{"name":"iobroker.nexowatt-ui","version":"0.7.20","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.20","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"14b0a59e7ef27a3bad2ab2ba4168a76b6c857b3b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.20.tgz","fileCount":103,"integrity":"sha512-Y0a8ItRZGmsXKTtZ5PSIhXHE/Xqi/4eJP1vKRBh/bHiqEMhLFX910ag8NrbRVk0GNe6td8X7xhayD+tlELviPg==","signatures":[{"sig":"MEQCIF8jKtn6RCcHXhrU71+sCbHgo+ZlcPHFoWChvDmPU26JAiBjC+IaQOocHZoNTIRLZ4/t5uwUUpPblinYoW+oVL5Exg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9719178},"main":"main.js","engines":{"node":">=16"},"gitHead":"396acc125e7d98d2cbf3eea954869291f09eb08c","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.20_1778163644345_0.13113563425746833","host":"s3://npm-registry-packages-npm-production"}},"0.7.21":{"name":"iobroker.nexowatt-ui","version":"0.7.21","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.21","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"5d33631ef8b86aa629dffcdcc7d42ede6eb3c0fa","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.21.tgz","fileCount":103,"integrity":"sha512-r2pAsXIWnvLwkRMS2K6ubWB/Y6rT32BHlMz0NysZnDzerVazfsAueGxdmr1mFNt7u9mDCwtkW1E4oAftGhy/qg==","signatures":[{"sig":"MEQCICFqdTQDuroSewYPtt/Mytm57VwskKUn7tjjJbKjiGOwAiAA6Ila5DAmbYrSggaRhr14s91ifY3+GXmXzTNuvcw6IA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9721227},"main":"main.js","engines":{"node":">=16"},"gitHead":"127f75fe9ffc2f59559f4e7a95e43f83a2bc5200","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.21_1778165440746_0.6407620659098405","host":"s3://npm-registry-packages-npm-production"}},"0.7.22":{"name":"iobroker.nexowatt-ui","version":"0.7.22","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.22","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"66972031ab1dff94c28a974b785f43bd4b67d3c2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.22.tgz","fileCount":104,"integrity":"sha512-te43RVuKVRYoexwhwPHUmzkoRXJWDmErZF4S8jrWdntAGd3gt1o0aGMW7z19uYnmerojhVrxZ59lx5JkKmAnOQ==","signatures":[{"sig":"MEQCIFNrvm7ltZjFqpJg/9ELBdEgwf3Lm9cBD5G0VbV1Buf6AiA9YXiVh8frdxyf8jhjkEtTeReuMAN4gxeY02IYS+P8QA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9901107},"main":"main.js","engines":{"node":">=16"},"gitHead":"29de9f9f36ea92183ad6d16657f678209e5d369c","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.22_1779629114895_0.8859783208858936","host":"s3://npm-registry-packages-npm-production"}},"0.7.23":{"name":"iobroker.nexowatt-ui","version":"0.7.23","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.23","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"8e5106554903360920e4c3ad66e7d094f6a45ecd","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.23.tgz","fileCount":105,"integrity":"sha512-BnQhrSdv/hic0BIjxBGvxFnmuPaLTbwjrTWaHmeADfjTkVmGHV6sCgMm9fHCAMlAPD17crqpYjd44lC+qCl+hA==","signatures":[{"sig":"MEUCICcfu7jPBGPxrL4gon9Bcpdw4kbNKxWPsXyCd9jTvsIuAiEA14fjE1jOmpVGWZi8V5n2PpIcdlyR+exHEm6hOSBdo1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10083415},"main":"main.js","engines":{"node":">=16"},"gitHead":"fb36ca4de4ac39ac70f918b885d803a3b331d092","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.23_1779630779859_0.6124535246469835","host":"s3://npm-registry-packages-npm-production"}},"0.7.24":{"name":"iobroker.nexowatt-ui","version":"0.7.24","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.24","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"531ad6cd98544dad681e97da10ccb2e0fa3e21d6","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.24.tgz","fileCount":106,"integrity":"sha512-Oh5Tac7rjRxPEaZ8cr2Vv4BGsB/Kg2N7P81ZojrCL235eSOat0GYVbfcVN5JxQSZ5atzONK3Hvr7LOuQ21Kn4g==","signatures":[{"sig":"MEQCIHBn3kbiVrIc5gJQXEX0R8G/GvuQxKBydkH/MltiNQ94AiBBEr2mGNXtYTsbu3+M3A5Gvqb+cM35x3qugiT0IQWFJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10264395},"main":"main.js","engines":{"node":">=16"},"gitHead":"595f688d553b3fe1365165ca90f96d0d188fccc2","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.24_1779635077424_0.3964120145914689","host":"s3://npm-registry-packages-npm-production"}},"0.7.25":{"name":"iobroker.nexowatt-ui","version":"0.7.25","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.25","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"c07d239e5c4fef4ac03a7acb212c5a48e9bb9f07","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.25.tgz","fileCount":107,"integrity":"sha512-+ryEebgQ2YvmhO5V5bix6UvuvxAhBeLs7euHuZlIsqAthUMUU9USES/HhnNWF3i5mV5gkPf2rUWNRXGR6G7Zjw==","signatures":[{"sig":"MEUCIE0XzGn9OsMpUBsd4pbBtTUJnVIlYIEoqCfQJAb4E6d5AiEAlSPWpQ/wypZ5zx2GefBiuUPGcrbWgDLh2v3sUQc8mIw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10444580},"main":"main.js","engines":{"node":">=16"},"gitHead":"ca7d0e6159634be72f31c069c1c75a3cd54a5931","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.25_1779820333498_0.49985049974246754","host":"s3://npm-registry-packages-npm-production"}},"0.7.26":{"name":"iobroker.nexowatt-ui","version":"0.7.26","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.26","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"59fadf7e1470b49cb77bc92bebc6e27d0f227d3e","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.26.tgz","fileCount":107,"integrity":"sha512-gVu+MyW3wiEx3KgLg20nupY5W9qW0cSkVVdprbMLhlZUsw5/mNsO66xzP+QcFpFqSamHyzX5mSHo91vYZPywfw==","signatures":[{"sig":"MEYCIQCLssufAscc2D2QgQwR//3VcEnzuaSTW1t4M0+vGAH/VwIhANIMTtK14EQjgl8kDGnM7Mh5KYJaiJXyXaRfj26xWS/k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10462610},"main":"main.js","engines":{"node":">=16"},"gitHead":"fdad03b07945cf716d5389931ef100ffba098d45","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.26_1779889438176_0.7001458816545374","host":"s3://npm-registry-packages-npm-production"}},"0.7.27":{"name":"iobroker.nexowatt-ui","version":"0.7.27","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.27","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"0b19dcb623280d2b9d6e0b867a8125d983f20252","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.27.tgz","fileCount":107,"integrity":"sha512-I0miqRkAIpGRuGN+rmLSbkaY+rzBC/aQMOgdnniQq+/WYQB8NvB0V+6Pba8gUttXLzUFjF+AZC19bWSSTR4vVg==","signatures":[{"sig":"MEQCIFn7SykammcEeORQMGJ/M5S0Ff7OhOfCoFGaYXB0WUagAiBE/oXn3MBHct5H6uP0mGw1hcXPWBs5fwqgwOgEHgYT7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10488105},"main":"main.js","engines":{"node":">=16"},"gitHead":"b50684c286be60497fc907a5d98fa555c21a2a43","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.27_1781019608005_0.8057513996359409","host":"s3://npm-registry-packages-npm-production"}},"0.7.28":{"name":"iobroker.nexowatt-ui","version":"0.7.28","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.28","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d3b21f51a33e77dbde2f6ba54b893f17e0d24f79","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.28.tgz","fileCount":107,"integrity":"sha512-quT7TbmqC6VfngDt1IGLUL1Q7KfdSY6WJQHDJ+onmlPN8BYx13DjfPx2+GOnQ12NcEbMsonNSgAV6kHggfZHPw==","signatures":[{"sig":"MEYCIQDD1Gghp3HYUxK2MIWNOlzuZBzoaJwxupoB+ffDBUbKhwIhAKoYSXuwBiAny7E2CugKRLKRKgVzuIqlpe5DK60iIxh5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10525723},"main":"main.js","engines":{"node":">=16"},"gitHead":"80ea934ab89ad875c45a223fc23d8a91574db31d","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.28_1781023400640_0.9945082806748164","host":"s3://npm-registry-packages-npm-production"}},"0.7.29":{"name":"iobroker.nexowatt-ui","version":"0.7.29","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.29","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b9b3a7304a41ba600f6daf38030188ce9de21c1b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.29.tgz","fileCount":107,"integrity":"sha512-kc8P+QrbJted9tNHXtwVB/TPZiVawsGUdvWjTFa5jo/NzgncOOiQLeTgKeekd6TTUAeIeciNXe0/rpp/78hSWA==","signatures":[{"sig":"MEUCIGBQz38WTh2ylUU/2u+mHhqTnExsLR6FjGi4X6Ycp+MhAiEAxcZgDmOTvMUms3AS4D47W/jRR4LQ9Wm2Q/BgEQORsso=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10559374},"main":"main.js","engines":{"node":">=16"},"gitHead":"2acc894deca0f86533f582ec5ac1774615247dd2","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.29_1781026761131_0.8793405368409448","host":"s3://npm-registry-packages-npm-production"}},"0.7.30":{"name":"iobroker.nexowatt-ui","version":"0.7.30","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.30","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b69c18f3e0923537620802077d17e56237393ff4","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.30.tgz","fileCount":107,"integrity":"sha512-abb7WNUsukvAcL3ziEQTYenPLocSOamzIE+vjFX+yRrnBnmzbaDIXTbpIi1+skTQPZX2ASh0tRpZYuz4gKykNA==","signatures":[{"sig":"MEUCIETl1hby2v91dPejmExtA0h9F9Erm5r846FDrgofzQETAiEAjwr5R63m2Cs7HTOx2qEbXltlkiQG3njo+yGuHrcn9vw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10643387},"main":"main.js","engines":{"node":">=16"},"gitHead":"6896245f45b0ee6e49b41bbd8bb5c6cfa699a8c7","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.30_1781029151997_0.7837997478077727","host":"s3://npm-registry-packages-npm-production"}},"0.7.31":{"name":"iobroker.nexowatt-ui","version":"0.7.31","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.31","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"2a4d118ace28c29b9df349f6c44148dc03747e99","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.31.tgz","fileCount":108,"integrity":"sha512-yiRc31AOSmDE4R/SXljdkAkWitiwX5m3D6JNOVzXCr1w/f0wuYVOELGP6uxeXpFNMniqcjxJxA4MYOcz8004Zw==","signatures":[{"sig":"MEUCIQCFi58FWBMzE3rPteF3psfRwE9H55767kSKmwhrb2qX3wIgarfOrr4Nn2JDOcGJ3WpsdowNyw+iWfl8tZ8hUskk8UA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10705045},"main":"main.js","engines":{"node":">=16"},"gitHead":"878dee0ffc53098c63545e6ef47f96b5882a108e","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.31_1781031139879_0.9328795871552726","host":"s3://npm-registry-packages-npm-production"}},"0.7.32":{"name":"iobroker.nexowatt-ui","version":"0.7.32","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.32","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"1dcc6d6c906eee4a0883d20ce7271a2d484892cf","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.32.tgz","fileCount":108,"integrity":"sha512-KiY8g7YMzPv4JwIo/5pUlvQ0CReFtqJK4dCLR6usRquQziyZ+0m07h6fBsKyVoVOJxSM0ifdRBEY0r26wdEpPQ==","signatures":[{"sig":"MEYCIQCIWWvJ/8gsVSHLtKLU77RP4l5oAO6iR+irUlctOpvjYwIhANYyGY+dGjXFGdLUmAWWqfsM7KsztxHkVUOzk2ltJ5Fs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10731991},"main":"main.js","engines":{"node":">=16"},"gitHead":"460c37cc00ca8a74e575bf59c7ba65369482ece0","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.32_1781034647495_0.9474235934612101","host":"s3://npm-registry-packages-npm-production"}},"0.7.33":{"name":"iobroker.nexowatt-ui","version":"0.7.33","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.33","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"ee1fafceeb9117f4cf39a7867aa26d81a5aa6076","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.33.tgz","fileCount":110,"integrity":"sha512-GRYPyvstOH2/TNPjzLpA2Opy6XM/9PkBrgTGK+qSyvvwu+tnmCH5K4CvbikcMMcK9J+jA1XSPawdDIzZN2dsiA==","signatures":[{"sig":"MEUCIQDCtMOxcatr/XQifxCdLlrfbHxsvsWCSuXgmn6wmo1p2wIgdRlblW/jgpQa/ixQX+ndGzrfJ7qqgkmOjLPGY5MtN5k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10825701},"main":"main.js","engines":{"node":">=16"},"gitHead":"4b5e8bd999a6878e3aaf2cf2c059247ad5899254","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.33_1781035697568_0.6715412449544651","host":"s3://npm-registry-packages-npm-production"}},"0.7.34":{"name":"iobroker.nexowatt-ui","version":"0.7.34","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.34","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"818403923c2a708710aa69ce895ee44f760f2bc8","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.34.tgz","fileCount":112,"integrity":"sha512-6SfjB8NtMvCwjyOtUDz9HH+8BUfAvAln1TnYuClfFy/HjmQOATmYWq5dkpx3f6fCmHPNjm51re7Z1u5/aTfEyA==","signatures":[{"sig":"MEUCIQDT9f4rzXUXcPXAAIo5QT5b/wa+LFHurpoOldnSYMYOPgIgSqbOE0tbC9QE4SP+/bk71TpLez36uBJtPOWCjbf1nOQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10846449},"main":"main.js","engines":{"node":">=16"},"gitHead":"98a314bf16eb344a629ff15bfb7123b6a59d7446","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.34_1781037711156_0.28496966679454694","host":"s3://npm-registry-packages-npm-production"}},"0.7.37":{"name":"iobroker.nexowatt-ui","version":"0.7.37","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.37","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b99e078dbe4efa8dd0a558824314c43ae531f379","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.37.tgz","fileCount":113,"integrity":"sha512-EJTtGoMKfByF2YM/6BqPekAhV3O9ONIikub3J7rDLP+DeJW239YDpgKbDmCED0E78wZ0soqqtY6+7slrtAAonw==","signatures":[{"sig":"MEYCIQCyJDBQI+RlkJlMl1doO7SbOxuaWXfz+hjHPMbzkLfhqwIhAL3gFmGFUJOXhyeclPQWrc9aCuva1mlvP92Xu8ORKE2H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10875380},"main":"main.js","engines":{"node":">=16"},"gitHead":"98a314bf16eb344a629ff15bfb7123b6a59d7446","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.37_1781039626993_0.1894250404203497","host":"s3://npm-registry-packages-npm-production"}},"0.7.38":{"name":"iobroker.nexowatt-ui","version":"0.7.38","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.38","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"cf22306aba7cebdc9a82cccb377173d60e732933","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.38.tgz","fileCount":113,"integrity":"sha512-lfiel4/VLUvbPODvqMJLz/jc7S3JyoKa3NM8cDxe8ETn490R8ZjjeADRkk4BVYo3MXmXezXDTC+nnK15kKzDGA==","signatures":[{"sig":"MEQCIDg3R1zi0diY/X479woCA2YsyoT5zWKT/FEL1LLFk1m7AiBF6JxIDvDf5qoQhUTWb/7wcCdG2kh8Ue4Ql2Hw1Vx08g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10879875},"main":"main.js","engines":{"node":">=16"},"gitHead":"44f2294b8fde462ec075f5c7dc6fa8981e970553","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.38_1781040999987_0.15454129520301807","host":"s3://npm-registry-packages-npm-production"}},"0.7.40":{"name":"iobroker.nexowatt-ui","version":"0.7.40","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.40","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"65680a2e594241a6138e2ef93a016426bb531539","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.40.tgz","fileCount":113,"integrity":"sha512-ltAPTDsmoqolx19pNzdyPFJCwoJomTvUCutefbgjzIUrKa/VdXhZoPvldBhMs3rV3dskK5XMtoustFJgSnyrqw==","signatures":[{"sig":"MEUCID1wEi+5Dp4zfup1FqruKpCwgcUpAicj3ulBA9ws6KmBAiEA9svdSGnIlaEEa5tZQnsW2+CSk21jeKX5TfRGTxZ2GAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10960888},"main":"main.js","engines":{"node":">=16"},"gitHead":"842fc83d78d796865b2d45c0386f3c28f87e1136","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.40_1781078840338_0.7674490543732535","host":"s3://npm-registry-packages-npm-production"}},"0.7.41":{"name":"iobroker.nexowatt-ui","version":"0.7.41","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.41","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"4d15f43420aa3303cd384027491bc31be8c3db1b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.41.tgz","fileCount":113,"integrity":"sha512-9+2yUKVTFq2/QVmX2MA+d46/81UWEJcNU2QVwlLM1YU+nyuSvXTuZ2sDb4CkXGutJNkdXKaTM6a2fCxdSn6Yyw==","signatures":[{"sig":"MEQCIE0e1f0zsyEzkrkG0XOTbX/hr1UFXM4LKOF4L/i3zrqrAiBQOUCymUnMqjRBMt13m8tcg0ZjHUtqVQ2VvRC7cRnC+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10979602},"main":"main.js","engines":{"node":">=16"},"gitHead":"842fc83d78d796865b2d45c0386f3c28f87e1136","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.41_1781082209626_0.43904214106607387","host":"s3://npm-registry-packages-npm-production"}},"0.7.42":{"name":"iobroker.nexowatt-ui","version":"0.7.42","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.42","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"7595fa86ac207d8cb86ea4dfbd317437b5f02a07","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.42.tgz","fileCount":113,"integrity":"sha512-F10WJEMgJ2Vgrw/Gd+6rxrdyape3VligDJRod3tEJsxK1hk7LdNb5Tc8B9Ecrimj/5HVdwx5aXmzvE+X9Xgz6A==","signatures":[{"sig":"MEUCIQCVkA8YhWRxGsyCE/cre1t49dRvsaK0cL7XmoD2G1KaKwIgT3xDwUhwwLinezgT68GmUxx5lB2W6NvbIpw72oH/jvs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10990651},"main":"main.js","engines":{"node":">=16"},"gitHead":"e4c667849f9ee6179349d9dc5f38bf2532aafa31","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.42_1781084071576_0.30659152877977713","host":"s3://npm-registry-packages-npm-production"}},"0.7.44":{"name":"iobroker.nexowatt-ui","version":"0.7.44","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.44","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"973c84a3706cb7e4ef13527705c39dc00588c40b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.44.tgz","fileCount":113,"integrity":"sha512-PS9IjdHwdWB9Y06e5l6p+lMZAApas36KSqhf804lkWziSNehoPIMc3Bxl1oSVAhjXersRJ/J3yFXfuVxo0pbJw==","signatures":[{"sig":"MEUCIQDG8w5vO9tP4wiss+PbSdDmgBC4+WGiAW419Zi9eB1NKwIgE0W0HecyvdWiA0mQfAwUEqvCEGd4ODigQzXCBwnM8pE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10998930},"main":"main.js","engines":{"node":">=16"},"gitHead":"8f009e895e2aed7b85ce0d7744dc82312e05d31d","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.44_1781150703118_0.24767286024452084","host":"s3://npm-registry-packages-npm-production"}},"0.7.45":{"name":"iobroker.nexowatt-ui","version":"0.7.45","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.45","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"5dfe7c8f381443db04d3fd0bbec046941da3feab","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.45.tgz","fileCount":113,"integrity":"sha512-0iWteSh9CRCbRiOrHBGx8XBp/3xcp/km70n6PsfANmdoUeZbzFLdpfgBliIHXoyEo+R9rHuUGralwJ3O3D9Mxg==","signatures":[{"sig":"MEUCIC5zhdNJjdVkJ5fMSiRz4TQKZ6hffyxMSVlH9VMCLQUKAiEAzmXb2z1zfCtrBsI8ivH4aUv0YDd9P6huASk08qRjmOQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11005744},"main":"main.js","engines":{"node":">=16"},"gitHead":"4b22c0a1ab39c3308e8b0baeaf6879b4d0619b91","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.45_1781157074235_0.2537648234109604","host":"s3://npm-registry-packages-npm-production"}},"0.7.46":{"name":"iobroker.nexowatt-ui","version":"0.7.46","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.46","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"93fb3ea03afb20a0335b1153072b9e1fc833caeb","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.46.tgz","fileCount":113,"integrity":"sha512-gySIntX/G+yu6d21XIIV+2SX3yt7WKervngZf8DGc9sUXZb4NDN7VOkoXuv/Q2zZGJ23njiqMuRPLUriIwylGQ==","signatures":[{"sig":"MEUCIAfKLfaABSKPKDpG6nwLCgMgTj+QMWqbNzHquWY/f5hoAiEAlH9S8bFNcpWsQMVH/iLN99cO58/EJ7ikB4lryBGNdZ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11011328},"main":"main.js","engines":{"node":">=16"},"gitHead":"4b22c0a1ab39c3308e8b0baeaf6879b4d0619b91","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.46_1781159312264_0.7347157571103347","host":"s3://npm-registry-packages-npm-production"}},"0.7.47":{"name":"iobroker.nexowatt-ui","version":"0.7.47","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.47","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"4cd1d6c6bd47681e376c3a9e5e3d7a5cfbaba291","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.47.tgz","fileCount":113,"integrity":"sha512-D+bYljhzIqwdYPDxUoMP7TayLLrNjaPnKAZIgD02kiERuQrXC3H8ekTYYLRIjIYNTexUJyChqx2hlgI0raRfGA==","signatures":[{"sig":"MEUCIQDuukaHmC17jvISCo1OcUIHDqlYifRqXih/b45RqwgLjgIgfjGDyj9xcdO1aNCCgbwxxjk7vPKsV+cWNhevyuobh/w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11009939},"main":"main.js","engines":{"node":">=16"},"gitHead":"15250508e2b8e30c03c40d67a0252364ed6ad702","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.47_1781160780804_0.8796714911067807","host":"s3://npm-registry-packages-npm-production"}},"0.7.48":{"name":"iobroker.nexowatt-ui","version":"0.7.48","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.48","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"7b164fcd35bce0de0427258889f62a5e0fa29006","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.48.tgz","fileCount":113,"integrity":"sha512-iHN8vINQsryPUC/Y4lyjr7yf+rB7Cn1C6MAKqS+oAbeUTuviZTZrRhP9T5cVPMuMNREbL6VwANxunTPnh7Z+Xg==","signatures":[{"sig":"MEUCIF7Nuh0r1n2q5xPQ6oYzp+MLSGrPQpE8DhmEaXD/4wbnAiEAlXyRCgooFJ522hfSM57dnPRO2CpHmTmo6C3lIBzZyyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11010977},"main":"main.js","engines":{"node":">=16"},"gitHead":"a783fdb9b6d779c25debd3bcf16c89319cf64470","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.48_1781169864587_0.11051558277680229","host":"s3://npm-registry-packages-npm-production"}},"0.7.49":{"name":"iobroker.nexowatt-ui","version":"0.7.49","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"Proprietary License (NPL) v1.0","_id":"iobroker.nexowatt-ui@0.7.49","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"081167a9688aee26edaa78498b95aace3735fb65","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.49.tgz","fileCount":113,"integrity":"sha512-h7bv/lVqTTeEFDGJ9Jdpn2t/iAE9YiK8WrdetiHjKyQVQr2MBiC6U+bqPwD4D/oKGp5kwO+qtDNLyhdbsCktwg==","signatures":[{"sig":"MEUCIC8efGYZRAT1F3rRrAeplga4mAQC1fpas2N4gTXH6zZFAiEAo4Rzk+4VMUlD/pWrScv7jU9VTsaO0aru1ckDeAUOi3g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11025275},"main":"main.js","engines":{"node":">=16"},"gitHead":"96dbc451711780afd434e35ff10ec5fd8a442b88","scripts":{"dev":"node main.js","build":"npm run admin:build","start":"node main.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.18.2","@iobroker/adapter-core":"^3.0.0","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.49_1781171953533_0.43276062938753745","host":"s3://npm-registry-packages-npm-production"}},"0.7.50":{"name":"iobroker.nexowatt-ui","version":"0.7.50","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.7.50","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"88a35d6f77aea80a0e69792978ad912b9ea3cea8","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.50.tgz","fileCount":113,"integrity":"sha512-uGs+tB3b7vXnQJBTarxEcjdc7fS/S8xLCMvRQ6sphXlaeZF7SHRydoj2H7XjaqjgdUb2IWNQB8NtxMsTTKVCDw==","signatures":[{"sig":"MEQCIErE6EqB8yoMCppN3V+KifzkrfcvRVA+jreVGLeigXOkAiAB4seUyztQ/GFt9thGDk8gd6/lkz3lF0kP0j0fATXXCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10651458},"main":"main.js","engines":{"node":">=22"},"gitHead":"4728561d5872186ba10381d25dbd7c068004cf3d","scripts":{"dev":"node main.js","test":"npm run test:package","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.50_1781175004751_0.3545551939231184","host":"s3://npm-registry-packages-npm-production"}},"0.7.51":{"name":"iobroker.nexowatt-ui","version":"0.7.51","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.7.51","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"93c5edc2ef17a7c598070459e58caf575c1edaae","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.51.tgz","fileCount":113,"integrity":"sha512-REtUpYeGmWScgQKwGngY8c2YqgiZgNkv/AkPsNID1cVXwfHr6HOe94LT2SGzLdl9ZeSRg2Q608iCVdK52iMQ6Q==","signatures":[{"sig":"MEQCIH/5OrX/BZ3vpMQmFS0wPT3lWQYkqXT5gUpt5SPzv6NBAiBqikwqcSM0KSgeKlU2l9wcVLlAU38qiHX3PHIZyuv6Mw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10655682},"main":"main.js","engines":{"node":">=22"},"gitHead":"f0b9d74143a1039bb6efedf8e38e23a2682d2100","scripts":{"dev":"node main.js","test":"npm run test:package","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.51_1781176963993_0.9239219341478129","host":"s3://npm-registry-packages-npm-production"}},"0.7.55":{"name":"iobroker.nexowatt-ui","version":"0.7.55","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.7.55","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"9c47ec2fac7e055d3ecb1e1d337a06a4ff8779a2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.7.55.tgz","fileCount":123,"integrity":"sha512-QG2NT2rdh56rjiCEfwvTvz6qWKGnYix/tW1gQPvmnmV7fwnfUCnksp7K0LwAa1O3fzZfmhEqTm+rHSLxnHLLyg==","signatures":[{"sig":"MEUCIQCiVT6r7mVDABtrBhmEA7R5fgULK6APaAR4pw6uIKZ+IwIgGGO1xXuP5ufkSqljAs+LMflrEmxEue2TuNP9Ib8BMYg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12218079},"main":"main.js","engines":{"node":">=22"},"gitHead":"3ebd6894cb1f7b7e7db521ac62b1666e04e79823","scripts":{"dev":"node main.js","test":"npm run test:package","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","admin:build":"npm --prefix src-admin-tab run build","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","publish:check":"node scripts/verify-publish.js","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"node scripts/verify-publish.js","githooks:install":"node scripts/install-githooks.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.7.55_1781258161643_0.5327070918456647","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"iobroker.nexowatt-ui","version":"0.8.2","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.2","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"78e3d6e9146bad4c5022f70b3d72f409e12ec0a2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.2.tgz","fileCount":157,"integrity":"sha512-LH6YXMcCngJ/Vgb7R152EJ7UPoNBIPeyKqVQMwhPR9v5lW3RoL+T8QxJWM6F1mwX36M2X4URiUlmQ+HWnyh2Jg==","signatures":[{"sig":"MEYCIQCfPfvSKy+7iqUdwhPYwrengSHOki4zH3nzoj4hF7cjWwIhAMXB0ATO6Tc7vJI4hHf876ZZS4UfyVTqcXAaujeD4n1G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12298348},"main":"main.js","engines":{"node":">=22"},"gitHead":"8fb207b755d00cafda1c80310785a69493d79b6a","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run publish:check","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.2_1781675252484_0.8367759525596099","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"iobroker.nexowatt-ui","version":"0.8.5","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.5","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"8ed416755a18f015ff3d5dfbb8d95afcca0f8ee4","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.5.tgz","fileCount":156,"integrity":"sha512-T2PV2oG1mHWb7i1Jv7fMKPwIeyos0heLBoNxufUep7NpddYeOOA52ES1oSfxBIh3NxHj8W6TkmHavba/zbkttQ==","signatures":[{"sig":"MEUCIEwYIwXx6r2+MH/dcAztEjKGbMtuKU6HKG/TvkXdYCQeAiEAn1Nhsrs3TWWDSjHhbaeQsodcxKvpPQgdEMqSylaRDw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12309294},"main":"main.js","engines":{"node":">=22"},"gitHead":"b9cd5a3a6a2342cbe7803ae31a26fa3f6b4f95cf","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.5_1781724877334_0.8125094083804274","host":"s3://npm-registry-packages-npm-production"}},"0.8.6":{"name":"iobroker.nexowatt-ui","version":"0.8.6","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.6","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"1b2c00f77109e0ca3466560822a1561aee9745ea","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.6.tgz","fileCount":156,"integrity":"sha512-QcV1Uf+sDbz5A+xtODGevJZnB41C9kvW/EVDEol0i+h2tRuH5evZAqqqHmYN+W9eSqg2RbYjBsasUvupc5l/cA==","signatures":[{"sig":"MEYCIQD1SEbYB2kYW913elmUP+enseYsmSD/yjckgvULJ513+AIhALVrBYoMLCQiweQVVum23emGwvHq/8rO9UX53bBsfzG9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12318169},"main":"main.js","engines":{"node":">=22"},"gitHead":"b9cd5a3a6a2342cbe7803ae31a26fa3f6b4f95cf","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.6_1781727983433_0.6782970567055759","host":"s3://npm-registry-packages-npm-production"}},"0.8.7":{"name":"iobroker.nexowatt-ui","version":"0.8.7","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.7","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"84549b866b86f5517b1def2d8a6fded29985a1fd","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.7.tgz","fileCount":156,"integrity":"sha512-XSw2ki2ccmDd4outCKXdRQkaREQwSWCeL0nN74gMNz1cjbfgkh9dHYCUo/ukt8Y87gmOfLFymW4Nu6SVLNpYzg==","signatures":[{"sig":"MEQCIH4jOqwJXgZ5OehEbOCxa34zh+jihG1YcKuMZ51hU/6cAiAMg/87MPpUAXBNne0ay+qr8sLtgQNbo/8OYrLn0QiwLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12322193},"main":"main.js","engines":{"node":">=22"},"gitHead":"fed2a40e8a9d29acc3f79966618d4c6fc6cec7f2","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.7_1781754208050_0.06810528416414985","host":"s3://npm-registry-packages-npm-production"}},"0.8.8":{"name":"iobroker.nexowatt-ui","version":"0.8.8","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.8","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"310283b7a4395d1ec69fb5bd7e21e8f653d603c1","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.8.tgz","fileCount":157,"integrity":"sha512-yykd+rHbPU+eU2rpzWomlsg5TOwTHike/3C3pduNXzF0n3L40FR0lY/fLGAhCPPhYWdpX9RzBD7zYS5atC8lnA==","signatures":[{"sig":"MEQCIEImtBqQWZeMkR+t+E/SZqGW8icu+9ybcU9xpj4vid5QAiAa18KR9uZxgAufuMvo0rJ+mlZJN+3ywoobhOV248UajQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12371605},"main":"main.js","engines":{"node":">=22"},"gitHead":"9d4ff1fe22b111ca75e6d1866337ff5126d286aa","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.8_1781790907668_0.7587156837334914","host":"s3://npm-registry-packages-npm-production"}},"0.8.10":{"name":"iobroker.nexowatt-ui","version":"0.8.10","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.10","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"4fe8481afc75d5696d946bef0360d7435a84f169","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.10.tgz","fileCount":157,"integrity":"sha512-2dHcx/rTeJyLgW4atrT9FQ7SI6pgfH4wmQ95DjSB97xZNa7cnC7hPqNk+5eifotYdV0wpGZcTR7B+DqyUwD/iQ==","signatures":[{"sig":"MEUCIG0sFYzDqsj98ctdXTooMSUShCbcrkS3AqPp47TU+bxLAiEAkrxD4+sGG5nEgo0tiLXFiCG6W8y3Hm94+n4EdeGHvPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12386489},"main":"main.js","engines":{"node":">=22"},"gitHead":"9d4ff1fe22b111ca75e6d1866337ff5126d286aa","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.10_1781801490823_0.7103855763197724","host":"s3://npm-registry-packages-npm-production"}},"0.8.11":{"name":"iobroker.nexowatt-ui","version":"0.8.11","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.11","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"1949936c837a2829cf4bf3a68e71ef52a01be0be","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.11.tgz","fileCount":157,"integrity":"sha512-yT01V4eS6Y4r6U0dMEExMgRHcq2M7KnwNGHIToKWZIzAvAARsPWkenYTblCKM9CXoa2fjaIO7cpwfKVLGml1yQ==","signatures":[{"sig":"MEQCIA1WHWj1xsI6OKX3nxOQrcgoswIag1ApfIjGmBG35MVvAiAogsPNmb4ViMY/f0UAWEABA8jIQ0mYj/6+3sOsDXkehQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12390600},"main":"main.js","engines":{"node":">=22"},"gitHead":"05092a181f0000e9f568265623e9110a438aae92","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.11_1781805690558_0.8889222623727566","host":"s3://npm-registry-packages-npm-production"}},"0.8.12":{"name":"iobroker.nexowatt-ui","version":"0.8.12","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.12","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f85bf86fe6475d5c96031f0a180902c03660fb8a","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.12.tgz","fileCount":157,"integrity":"sha512-iE124K50gQuVkTzRgRtfcFrKfQP9PWm00V+jZ6quPNzBYOPE3lpFPGNMSMffEzBJSERB/hsh2li37FKYgRZFKA==","signatures":[{"sig":"MEYCIQDBI0bXwJhUud+M6ycIVj1ueu4osY8ajZtBG/6I7G0eiQIhAPFPN4Z/hiT45dEZdVnHo8bg/7s3VMgvQK/BWenigSHB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12420814},"main":"main.js","engines":{"node":">=22"},"gitHead":"24eaab2ab77afe1839bbb26a884b087b6bf2614d","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-storage-policy":"node scripts/verify-ts-charging-storage-policy.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.12_1781810912632_0.388723200076482","host":"s3://npm-registry-packages-npm-production"}},"0.8.19":{"name":"iobroker.nexowatt-ui","version":"0.8.19","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.19","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"1642608e85214bffd899b2940d892932af36997a","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.19.tgz","fileCount":165,"integrity":"sha512-FKuGJUO8DozB4BQtmrnZ7mONUoYlev3hzuHW+A9t41o83wzRMOBRQXGiPZsDe2ziaq7xnAYQl+47APijiMBWlA==","signatures":[{"sig":"MEQCIFfCjCwNO4xHQuDzvxYBXUph5s1+dumzKFEQNKXj2iAvAiAbtyAB4fzxx9ifNVhDWP99D7WUuqkCvhwMQm5nI1fA0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12599947},"main":"main.js","engines":{"node":">=22"},"gitHead":"3eedd316d96842fcb5a32cc7067ed74d467eb3fc","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.19_1782064273076_0.9716666078740408","host":"s3://npm-registry-packages-npm-production"}},"0.8.23":{"name":"iobroker.nexowatt-ui","version":"0.8.23","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.23","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d527cebd1fadd7d7cfc154d145b9aadf33c0ea1f","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.23.tgz","fileCount":165,"integrity":"sha512-RCZmqC2W0vRCgWvGYkOxvDeoWJmq7Roe76GeRhbd67FQSK9Fa0x8f+zyapWNFYmlmiECRceDIP02ZnBfGX4TaQ==","signatures":[{"sig":"MEUCIE1ufTXXU4q4uX6uvZcjkEH+/pmJ3jbs5uc7CtZ3xJAwAiEAx/qaNISCAHR0uyFBlkOGc84Umj1/MIbK4CPKXx7oSgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12642870},"main":"main.js","engines":{"node":">=22"},"gitHead":"58e5263254d554e739e68c0d479b0099ebcd710b","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-wallet-customer-settings":"node scripts/verify-energy-wallet-customer-settings.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.23_1782143941337_0.9359348675079151","host":"s3://npm-registry-packages-npm-production"}},"0.8.25":{"name":"iobroker.nexowatt-ui","version":"0.8.25","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.25","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"072f0343fc559448fdb4775dbed15c2fe835343c","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.25.tgz","fileCount":165,"integrity":"sha512-NSSEOWPMuoDejCWBr5J1WtELGVHF9a8UyBU34z+rUHoQ5fYjeMaRcl+h6cUs7jUsF0ZjhP0x+FIG9B62ERnvpQ==","signatures":[{"sig":"MEQCIHQlZdkfRi8WZUJWLJMwk2zmyymdWwl7uUpcZ8zgLYPrAiAISYxQMe5OFbEyWH/n3q9BBzKJL+VGRHmbjGVG5hXofA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12667226},"main":"main.js","engines":{"node":">=22"},"gitHead":"1595aec813eee5f667db50d69d55c568df9c53b8","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.25_1782152260308_0.4734599384382463","host":"s3://npm-registry-packages-npm-production"}},"0.8.30":{"name":"iobroker.nexowatt-ui","version":"0.8.30","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.30","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"9abfabf6ab53a6fe78096b818da6822e87161608","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.30.tgz","fileCount":168,"integrity":"sha512-IYP9YNegd4KiNBM/tgK6amuVQG88QU6rBzQjywucKESU7JUX4FecGDf3hF8knmlms1dUeKobANnrwH3jt6Ee5Q==","signatures":[{"sig":"MEUCIBpEQQUdthLgKA/wTBy7TNOXx58gwNkv8p2ubG4LQJPbAiEA5KqZs8AYs069Dh4SlLsTw03kW27gyjf8wzkBMQPi76E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12768942},"main":"main.js","engines":{"node":">=22"},"gitHead":"c555943963b54c3d781101d48f6ad355181056a0","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator && npm run test:export-guard-stabilization && npm run test:no-release-artifacts","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:no-release-artifacts":"node scripts/verify-no-embedded-release-archives.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.30_1782162095942_0.12319695622799776","host":"s3://npm-registry-packages-npm-production"}},"0.8.31":{"name":"iobroker.nexowatt-ui","version":"0.8.31","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.31","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"fe1825217c11352061a57c53404ebc1e140dd461","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.31.tgz","fileCount":169,"integrity":"sha512-sQO+7HTTfF/iNzTXzHhJKJ9JYPDlWF0ACD/4oxmO8l3W/nwPkk7PmCmDDpv611r5k3AeOj3SvZUErq5djqXmAQ==","signatures":[{"sig":"MEQCIEnxicLeFlIJsu5IJ+cu06nanPCgZuFyL0jEpz5Gn4MgAiAsDPG9/RNeqidUKcuQ3iQf93+JMu4mK41A7KLnmQgJSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12806724},"main":"main.js","engines":{"node":">=22"},"gitHead":"85a98b3394c52a131acbf9c0fab348c03747cf8c","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.31_1782186509074_0.26921966262191344","host":"s3://npm-registry-packages-npm-production"}},"0.8.32":{"name":"iobroker.nexowatt-ui","version":"0.8.32","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.32","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"999944c9f1157e2eb927e2af74dcf7d2d903b7f2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.32.tgz","fileCount":170,"integrity":"sha512-BKrPqSEL3dllALpThbEspDQBU/RJEZ1Fn+WYdQV4ER+sN6m49w7oBb3PhakUPe0UHi96LdLyCa0FRYBrLW1QWg==","signatures":[{"sig":"MEUCIF6O07fd70zothvO466TEJ2jKHkHVB5x+z1RwAjDWmc+AiEAurJc1n9pJ7S6l11eFfJ6xr7JaManw11pbyh6fO7Lxxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12843334},"main":"main.js","engines":{"node":">=22"},"gitHead":"0a8b37ad252f432d5954d4ad44e0dfea0a91ac8c","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.32_1782188275769_0.4873893153950586","host":"s3://npm-registry-packages-npm-production"}},"0.8.33":{"name":"iobroker.nexowatt-ui","version":"0.8.33","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.33","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"34ce1c68ecf111543cad6fcd408baf04c82976e2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.33.tgz","fileCount":170,"integrity":"sha512-YRSu1Mv+3vujmQS6NM6QGoXfZNdbuPcfu8wWlEAgWz9aqgb/Ra3dGoJa0dRauD42Qoj50UY3Ahu/gmHm0jH9tw==","signatures":[{"sig":"MEQCICFp5QjBjYMOW/255Bu9blj+kQNASiM9ZvDc9pE4z82uAiBeSOKOOEJeM0yR0HGIDu84OklNFn3jsM9+Isq/MSVcng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12857973},"main":"main.js","engines":{"node":">=22"},"gitHead":"0a8b37ad252f432d5954d4ad44e0dfea0a91ac8c","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator && npm run test:mesh-microgrid-model","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:app-center-structure":"node scripts/verify-appcenter-structure-cleanup.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-microgrid-model":"node scripts/verify-mesh-microgrid-model.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.33_1782190643956_0.32322361993706794","host":"s3://npm-registry-packages-npm-production"}},"0.8.34":{"name":"iobroker.nexowatt-ui","version":"0.8.34","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.34","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e551ae15c155e1ec26f9f8e5757ed9e5f20bc502","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.34.tgz","fileCount":170,"integrity":"sha512-FIcLm+A1OoHXCxNFpYqNquHKVJhs0B8HYn1PNYSa8mTBgtL6I5Q7RBG/P+GO4zjNnA8kRKd4amR3nT49GKdpPA==","signatures":[{"sig":"MEYCIQDQavMSf1oQ14TuRzg3zcv1fclgbLA46E7qxrZnRfHhFAIhAPWo7cdjVBbW8tZiAUB7JcYZU5q8l78M/8KgRH9hNeA8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12856310},"main":"main.js","engines":{"node":">=22"},"gitHead":"6939b4c8efdc49b15d4068d2665f2ccac0e04484","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.34_1782192851196_0.9855905721534761","host":"s3://npm-registry-packages-npm-production"}},"0.8.35":{"name":"iobroker.nexowatt-ui","version":"0.8.35","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.35","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"407e050ff18907570e0b5b62f86edcaf1dc2eeb0","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.35.tgz","fileCount":172,"integrity":"sha512-LA/XW8Kh5h6zE6eBFXgi8vd3LqSZziBNJh/6LnVFTlySBndIrVSQE23DfrfS3fy6WfG8iQwGSp+d5UyZC1PdXA==","signatures":[{"sig":"MEUCIDEcfYkhBHYwlTTy+p/N54i3acljkl8d+ro0sKsMbHSTAiEA0z32q7MMstY7rRgWcYNFTBsL6ycSFBjI5CWd6t2dLPw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12876877},"main":"main.js","engines":{"node":">=22"},"gitHead":"212ac99dfa315c5308419413ca6df106c1aa6148","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.35_1782225160502_0.8890975681167339","host":"s3://npm-registry-packages-npm-production"}},"0.8.36":{"name":"iobroker.nexowatt-ui","version":"0.8.36","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.36","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"8f09a234884d2d1df02d02e91c666cc027338e7a","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.36.tgz","fileCount":172,"integrity":"sha512-YG0v723hfDEpU/Rj/hfdYLesLLT928yaiw8DOCjqwYmSI7HPhKsbqlkN1NdR+drAt1xVv4OTF3m2kNqScWYU8A==","signatures":[{"sig":"MEYCIQCSN7k0ogwouLyaLg7m2hKB7iSwr88TSoLX97HXXnR7xwIhAJzn0h5uvisXD0pFu2cEjyHhFlIQeGTsPJt/1/Tq5HmR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12895793},"main":"main.js","engines":{"node":">=22"},"gitHead":"212ac99dfa315c5308419413ca6df106c1aa6148","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.36_1782226771293_0.5297646383493126","host":"s3://npm-registry-packages-npm-production"}},"0.8.37":{"name":"iobroker.nexowatt-ui","version":"0.8.37","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.37","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"1ae9899d1f9ac52e303de89ce1d300938adef3e5","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.37.tgz","fileCount":172,"integrity":"sha512-jXIMp79wvMeS2AhbXTWNmWKydW26oDvlm5cHvBA+wokwbdvbiKMPgpUvIuVNMOouS9tO2ETd1RDmZvU4YG+++g==","signatures":[{"sig":"MEQCIBt13GrHT5EP/EA+Y7Do46KZ4prXmL1EQaxwFJXFtInsAiBtPOs0ZnA0lyybb6dEypcOSYZWg8sK576HWcLjvvxsaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12898389},"main":"main.js","engines":{"node":">=22"},"gitHead":"fa35c0406e4a5e0e4833d5c8cf02afd4033317d3","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.37_1782228513327_0.45952045889551396","host":"s3://npm-registry-packages-npm-production"}},"0.8.41":{"name":"iobroker.nexowatt-ui","version":"0.8.41","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.41","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d7c9855fbe6d950aa1c1e750356e980b0a3170ca","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.41.tgz","fileCount":172,"integrity":"sha512-iJNpUqtjEboCi31KIVaDvyjDniqi2QwHnVPYT3wbtRmX1u5vUiP70oViIRnV+cIqqxczSCGGdAuBFu/kTA5RZg==","signatures":[{"sig":"MEYCIQC+fAU5QVe6FkYZO3iDlg6VL/TpHgsR8pmO4sp9zP6kagIhAIDEw54ExhwQR4E73lQPLP2nvSogzi9wxzbNdwcBLBnQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12967359},"main":"main.js","engines":{"node":">=22"},"gitHead":"e9b258b985cbeae2706a41fd012c57921ac5199c","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-peer-receiver":"node scripts/verify-mesh-peer-receiver.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.41_1782408933933_0.9717547224600644","host":"s3://npm-registry-packages-npm-production"}},"0.8.55":{"name":"iobroker.nexowatt-ui","version":"0.8.55","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.55","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"853e20ffe0f1eca03c6feb5b5716629e4fdc2138","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.55.tgz","fileCount":172,"integrity":"sha512-4D0pYiNk9WWt97pv1pAIY2Kgc56fOVkVa1k8Bv7SI7ydFO/KUJlkRaSALhBd+CsIYIfaxX0MwWE2gEZ4jp4STQ==","signatures":[{"sig":"MEUCIQDWEVZzL2mp+6sPlplZBoNJDJ9gRULbiwx2Jkvbnh93xgIgPW1PPJ0zyHu6UJhnB+7pWIb7L6tS1PtqyS/uAcNOYtI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13187789},"main":"main.js","engines":{"node":">=22"},"gitHead":"de13aefa70cf824f94314e72db628db8aa5f5927","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.55_1782670371892_0.2763280156496033","host":"s3://npm-registry-packages-npm-production"}},"0.8.57":{"name":"iobroker.nexowatt-ui","version":"0.8.57","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.57","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"4c495a46770081b180ca86e95717692a95319132","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.57.tgz","fileCount":172,"integrity":"sha512-Tff9cqE3ok6Qy/VUTuXnJG/G4u/8mtqu3rnJgDENZAQ6ALVtmqH/rsvEeTgLuG7sNXjjwHQ/aveQJNb5Ym1RFw==","signatures":[{"sig":"MEQCIGwH3/kg6VJV6Xw4N+fFnTVDgSXA5tGbQYAxlUG6p604AiB8ATfr/N9I6nr04iilAK00GVO80JUoKGK8QNeK/0uHug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13218936},"main":"main.js","engines":{"node":">=22"},"gitHead":"18c27b951d754563c46e34aa746b8985e5b39fc4","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.57_1782676094306_0.2919993319069132","host":"s3://npm-registry-packages-npm-production"}},"0.8.58":{"name":"iobroker.nexowatt-ui","version":"0.8.58","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.58","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"608aef43a573c8cb377276752c1d9e72a260e75f","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.58.tgz","fileCount":172,"integrity":"sha512-Us4SkR+0k8WwTh9swb4AbeUoKdEL6TBrm/JMH6Bgi80+vCxez6A4iy0LgDjc3oMEvxx+FQIM98hWRnVoqMMhOQ==","signatures":[{"sig":"MEQCIFm+CA7VS4Zgtz/27xC5W92STjsWTsE4r8uD3OqxQlgKAiAM5oll5Iz7j7gL+/W/xqAcYJ2iqUNoWZhVwSyCQlcCdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13223673},"main":"main.js","engines":{"node":">=22"},"gitHead":"18c27b951d754563c46e34aa746b8985e5b39fc4","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.58_1782678271413_0.6792878373090887","host":"s3://npm-registry-packages-npm-production"}},"0.8.60":{"name":"iobroker.nexowatt-ui","version":"0.8.60","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.60","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"198b3faa4d03bb2d60a1e06b44d4c6cdb80c28d7","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.60.tgz","fileCount":172,"integrity":"sha512-OAK0yl32F8MyGD8ZzDP5V2uGO9/7KJsdsmLJ5yUO3NtQncIw2oI5wzQXcvhhS9f9Aguvyj9TTCLeHABYQrSGMA==","signatures":[{"sig":"MEUCIFOVcgzz+F6vsaCbWJhnkDLUkq3wxE+VlCaWP79NfoBdAiEA+ALaT2r3FE/ETfEsBWEwL7td8Y4KU/EvKwcvRa9+ARo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13245458},"main":"main.js","engines":{"node":">=22"},"gitHead":"b88fb70aa581a1f92322f0dfe41306ae7c62b0c5","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.60_1782760942014_0.614418475939343","host":"s3://npm-registry-packages-npm-production"}},"0.8.61":{"name":"iobroker.nexowatt-ui","version":"0.8.61","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.61","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"37ce0a7843dd0693bfbf889eca4a5d426aa86350","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.61.tgz","fileCount":172,"integrity":"sha512-YfzSMb63a10GH2y63ReAP1ZjG67DlGKt6nNbjYvPJYvH8wp+qxID8DeSdVt66z87cDba8lRGEDiowXYsDIX3Yw==","signatures":[{"sig":"MEUCIAKeeT4vWJu/7bmArWMarQ0Re1foDI6qYMcaNs0Xc2tsAiEA6KToWlcxtwBUdPPBtc3+U97u7Zyvv2wxdOtD2hM9LCk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13250933},"main":"main.js","engines":{"node":">=22"},"gitHead":"bface2b9be633145f4967dba8513222e232ed57b","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.61_1782763012818_0.022589817921847777","host":"s3://npm-registry-packages-npm-production"}},"0.8.62":{"name":"iobroker.nexowatt-ui","version":"0.8.62","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.62","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b937b93dc9388baca5135fcbfe28ca69970e6930","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.62.tgz","fileCount":172,"integrity":"sha512-otCSG4zs+4wLZt0SbmJ4um4pWnJ9Mr5e45H3213U1ZaYXiYiBP5Wbk1panneWnb8xjNRpZ5aUpisOT8DWAKgJw==","signatures":[{"sig":"MEYCIQCsDwZWo/+PRI+TKib68VfgRdB7i7pK0z5u6DSloOmXfwIhAK7mZsLZ0JtBc24tHAME/YlS7qZiyH+PKZfPdqPq2rl/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13254469},"main":"main.js","engines":{"node":">=22"},"gitHead":"1b37c760daaccb302a3abca21e65f158d463f92f","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.62_1782766622003_0.11182092683524125","host":"s3://npm-registry-packages-npm-production"}},"0.8.64":{"name":"iobroker.nexowatt-ui","version":"0.8.64","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.64","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"ab747f5271dfbb8c871e60aa3806700955879468","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.64.tgz","fileCount":172,"integrity":"sha512-EkvV6F++n1YCxdgtNeUMlEAWmlOH9fHgwLUruRNxNusjmes3RBUdicZ1XZVb0My4+yJqf3xlFaPMMdV0O7O8MA==","signatures":[{"sig":"MEUCIQDoNsHVWng5Lw2VKUcfAp6F76BrWjdYVkwfQa9pM+TDawIgX/IjSbmaELc0ml0pJwHId92PnpecYvTEdG8wvPbsSSU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13258931},"main":"main.js","engines":{"node":">=22"},"gitHead":"8ef7b511c5314e9f9ef324bebfabcfe0984b1c19","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.64_1782768968418_0.4328397811075091","host":"s3://npm-registry-packages-npm-production"}},"0.8.65":{"name":"iobroker.nexowatt-ui","version":"0.8.65","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.65","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"a2a0c3ad3f0a2d2f23f5130b43a38877baee6391","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.65.tgz","fileCount":172,"integrity":"sha512-H9kfR+XwDHy27Lk8f/c/AUmVwzgeoRNhe8/AGJA2uzPVq56NgZMH3Fd021L3SoYpHfzmclUlrL8NJ+8oXRZKAQ==","signatures":[{"sig":"MEUCIQD2f4y8YAI0e8TJSu6rejSHrgM+kTct5ggcIjCzt+KIjAIgLTwX7TtLmd0hWuBYoz6Imv2L9AI7MZG3rffvtfhtaLY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13262346},"main":"main.js","engines":{"node":">=22"},"gitHead":"15f8641c41447fab3566cc83769a6e4388687fcb","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:loadmanagement-evcs-active-demand-reserve":"node scripts/verify-loadmanagement-evcs-active-demand-reserve.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.65_1782791235658_0.6833121908863984","host":"s3://npm-registry-packages-npm-production"}},"0.8.66":{"name":"iobroker.nexowatt-ui","version":"0.8.66","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.66","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"c08f8532668df0a143d24407711f2a0b147e2cee","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.66.tgz","fileCount":172,"integrity":"sha512-iItCiQqyeosd5jWGVLQkTcRaGhge5s4s+DWIYoNgM1VWQ4n9/5Oy/T77tPORRRZu8Uw7HCgJDR8Ptk9w9Od8qg==","signatures":[{"sig":"MEUCIQDJrdYeHHuEXPDzpCUytFa6L+QFM/qujyJ0Fle9fLU4VAIgbDWxYZDNyLbcKhROppe8AYazpT/E/Ka4pWHJZuoQL7Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13266482},"main":"main.js","engines":{"node":">=22"},"gitHead":"fd702ee09258380ba3a92048534e82e632a350be","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.66_1782934918399_0.9996133060661518","host":"s3://npm-registry-packages-npm-production"}},"0.8.67":{"name":"iobroker.nexowatt-ui","version":"0.8.67","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.67","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"273d6fda4b1f352b05ca11a9a05940bd28baa522","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.67.tgz","fileCount":173,"integrity":"sha512-9t8eT5MVT+Q2MMq2m0Wkj6fYaSNfZS2iOqIbhWwTdy4pEm67IuDNtqEdfcoOhJ/c/PSBO8EldIPIiHePp07LWg==","signatures":[{"sig":"MEYCIQCqpG/5SYECDJR2oW5SrrVrWIaknUNetyn9N0SaDf/igQIhAIJTLl6uOWlujAOd9plhUa3v1/mdCNosQtsFeS3sJBGV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13282938},"main":"main.js","engines":{"node":">=22"},"gitHead":"1d2291d23afc9902155edb5dc84b96d79fc94321","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.67_1783255521527_0.5475737000036873","host":"s3://npm-registry-packages-npm-production"}},"0.8.68":{"name":"iobroker.nexowatt-ui","version":"0.8.68","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.68","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"364b0708d2de96461fad9d70a36bee6b9ac06a60","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.68.tgz","fileCount":173,"integrity":"sha512-u+hsvZG0P6D3ZCdc568kFZP1S5328jrAWgh8+gEhmhgi/KF+c+E9tNsSOdC0utUjcwhMZMyidcmjIhhb7yGllQ==","signatures":[{"sig":"MEYCIQDG7glG9dv+gaSnNpuVMGBYE8zfLOobpnALib9av0fFSgIhANjGuJbHouRjnrQe33zKvkfsyT7vdYS2LmcvQIwtbHSQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13292823},"main":"main.js","engines":{"node":">=22"},"gitHead":"edc923320f01bc44ca759c8b30d7c71c34f3061f","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.68_1783258037162_0.9423607377240499","host":"s3://npm-registry-packages-npm-production"}},"0.8.69":{"name":"iobroker.nexowatt-ui","version":"0.8.69","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.69","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"89552c9dda508b629e0bb195338132a5d02b73ce","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.69.tgz","fileCount":173,"integrity":"sha512-vlQZJGgCJf3gyijWh9NRzD1r5Kd7ipkoXGuW49KA/oqPatOC0X2bHAHZwIXpIWHDox5kTunQp97TZZEQe0d6mw==","signatures":[{"sig":"MEYCIQCT4UhAPMFVQQVkX4MSYIGz+Ri8EuHy+LoBbIBaz40kIwIhAI8MUbmR1/vwW0rPSew5ulpJiBkRvZbW49Xw2sb/f4wH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13301887},"main":"main.js","engines":{"node":">=22"},"gitHead":"68e8c9ff81573b3a9f30cdaceb76bda04de31d79","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.69_1783352978588_0.5693903051104034","host":"s3://npm-registry-packages-npm-production"}},"0.8.71":{"name":"iobroker.nexowatt-ui","version":"0.8.71","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.71","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"3eac2ff0652fcee2863ede9d8a567c96d4023a64","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.71.tgz","fileCount":173,"integrity":"sha512-ZKBlfmwmdKunLUqRWSb0vJ/Ue6YNTw4a+/JwgTck7jZS6hEK9fJS9UPfeq3bML0ze9K8qbpBeyBJoHzYm+s52Q==","signatures":[{"sig":"MEYCIQDpGURsyQFkiQqJeHJDnhf4W5aIqo4aOX397Ky8m1XbPgIhAMWyXqlNEaXm25190qWqb7Io10YnhA5e+J0JZ81ZWXoD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13306786},"main":"main.js","engines":{"node":">=22"},"gitHead":"c5b879446535d23b0a43e3eab655a7bf5e65bcad","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.71_1783360966416_0.4943882238573529","host":"s3://npm-registry-packages-npm-production"}},"0.8.72":{"name":"iobroker.nexowatt-ui","version":"0.8.72","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.72","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e23409187001ba69fded9339e3454ab561053497","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.72.tgz","fileCount":173,"integrity":"sha512-ts+LyD+Ugnjc2qiuDBo0qV/gQ+BSZL6kXT3MxXP20iZfz3fvNiu/yS7kGD+FfIYOoFQz3kvATYj2vRwzMbOBfg==","signatures":[{"sig":"MEYCIQDDXoN9aUrR18HUd/cUXNpP5Dhg/Oi6jUqSWlGm3cxTQQIhAIGwpf1ZW0PLAiDO7SbIIWc1Yj2h/cQbZ1lNBLrfG1/O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13309574},"main":"main.js","engines":{"node":">=22"},"gitHead":"c5b879446535d23b0a43e3eab655a7bf5e65bcad","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.72_1783368578385_0.6772514263706728","host":"s3://npm-registry-packages-npm-production"}},"0.8.73":{"name":"iobroker.nexowatt-ui","version":"0.8.73","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.73","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"788b0f090fd1a258e81d362b36991c202669cf3e","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.73.tgz","fileCount":173,"integrity":"sha512-x5HMXrCAcva4Id+8/0bWG8fKZhlsJ9MwSnKl2pg6Bo6XBThvP5t0t+DeCcjjEcMiJMa0H9X609sGO1W4OSxqyg==","signatures":[{"sig":"MEQCID57obrmqNfjXxuLkMil8Bc1PaEr7H0gwXZdcgPCG/KXAiA5srT1Ilajh1XL+oFqJv9prdJeZhg3Z4dfqXBjyBjeHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13312538},"main":"main.js","engines":{"node":">=22"},"gitHead":"a4d349fa05d4684f2a47373c511df7da5bab633a","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.73_1783370894094_0.29925308980682575","host":"s3://npm-registry-packages-npm-production"}},"0.8.75":{"name":"iobroker.nexowatt-ui","version":"0.8.75","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.75","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"7213dbfba73b7c4e92a84fbfbcfbe07892177198","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.75.tgz","fileCount":173,"integrity":"sha512-t+sU3PyNmizMw5Lk3u054DGoB7Hx2RUUm2o0OByv5cnTLfsyS4QGRT/6TGuxMbHBD9C+8x4KdspMoqyWqcsL/g==","signatures":[{"sig":"MEYCIQDb6El8ZnppDd03qTxhudhbomFYhtrMG99/AhbOI/qvPwIhAMk+xr0j6maqxKWB2/HL4wjIqRSxFm4NKOdgrIuJpNUH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13310235},"main":"main.js","engines":{"node":">=22"},"gitHead":"5c21ddae4c95276b579522530095f5b265eec23f","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.75_1783395145729_0.558839758555866","host":"s3://npm-registry-packages-npm-production"}},"0.8.76":{"name":"iobroker.nexowatt-ui","version":"0.8.76","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.76","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"5fbf676e2200920c2e30f4eebcd2893ad88e1f34","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.76.tgz","fileCount":173,"integrity":"sha512-DhK7wiq//lat2beLnFSZR5EoEGXCzxo/2JAQ0ztp2CquRLAGZ/fwalq5nEjoidiIDTVoz23nB6StIv0ObAzt0Q==","signatures":[{"sig":"MEQCIAESkudYb/WvM3RK6ZLQTth3+Lq7urL0IW9JtuVDjOVSAiAtuPqYMU8sR01Ji19I2sEpPk2kPywrDtUtO44vZHQFxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13322418},"main":"main.js","engines":{"node":">=22"},"gitHead":"5c21ddae4c95276b579522530095f5b265eec23f","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.76_1783447988061_0.809132022566079","host":"s3://npm-registry-packages-npm-production"}},"0.8.78":{"name":"iobroker.nexowatt-ui","version":"0.8.78","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.78","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"5614a9914299288555fdd22a04fd49777aeb698b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.78.tgz","fileCount":173,"integrity":"sha512-nYJFJ6zYyoa5ETKooRrMys8GIR3zcIPnbTPFp+jakvGI6WBaxeGmxCcsx+qmOIa+4ZIXZx9V/uYIk46hFZLZKQ==","signatures":[{"sig":"MEYCIQCLVZnUujzgnuxe9W5diNEfb6kKjhqereoncjch9cuaxQIhAMiuqjBEZnHaxREglfCijyry8+uJ5JDgG8nlMg6lMoiY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13329468},"main":"main.js","engines":{"node":">=22"},"gitHead":"5c21ddae4c95276b579522530095f5b265eec23f","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.78_1783452491087_0.8660144144668349","host":"s3://npm-registry-packages-npm-production"}},"0.8.79":{"name":"iobroker.nexowatt-ui","version":"0.8.79","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.79","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"6ec49ac0a59938118b1993f4b2dee1c3b46c3e95","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.79.tgz","fileCount":173,"integrity":"sha512-Thh+7v1bXzSK1uy+VTFL2It5MVAoq4oM8qRnpHqGP9vR+6ELhYEYI8+x1vhI2vKu6MqLGc0Zlte55bB8Dfey5g==","signatures":[{"sig":"MEUCIGJTKvtsRhY0UaRCM9oJVnyuYUPUQIOY171Z1RZDxTrwAiEAipfjax9rRn7eZLTaMke6u7F0bI6lD9/SBbDWw/cBrWI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13332372},"main":"main.js","engines":{"node":">=22"},"gitHead":"281be92e9436ec12aa12af81638d75809bc6b335","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.79_1783485769971_0.8931636690732752","host":"s3://npm-registry-packages-npm-production"}},"0.8.81":{"name":"iobroker.nexowatt-ui","version":"0.8.81","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.81","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"a379dce4fb80545d54760805bbdf3aa49036933b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.81.tgz","fileCount":173,"integrity":"sha512-fB9jYS3xk4Rxi4tkQc8ymwPHKqtHB7bbG2nVDsDX1jfjtPp0zTkQCYwHyQ7tL7lZqM7RpRQAj7+srDCmf6PRqA==","signatures":[{"sig":"MEUCICUbnQ2ggjUCpkj/8op9uS7XudjV/djRyZ9gBIy+2av5AiEApy6Y0SPc6YuND2kWZowfgJh/dmVLxdy7EpNYU/wdL7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13344874},"main":"main.js","engines":{"node":">=22"},"gitHead":"f4cd43ddbfec7ed0bef98b6a095eae4c4539b687","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.81_1783491953004_0.12746667922255228","host":"s3://npm-registry-packages-npm-production"}},"0.8.82":{"name":"iobroker.nexowatt-ui","version":"0.8.82","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.82","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"4ed606bb03ef0a4d0b028a2a5506b9023518960d","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.82.tgz","fileCount":173,"integrity":"sha512-ZC18XGFBkhFvg3qyjlaq1RvdQW0tMX2XtHNb9k1rorrRAgsWfdTysp7TfSu8Ct9nqAFIk++E++7e1nZx1iiIeQ==","signatures":[{"sig":"MEUCIHshkoC3vaajXhk7OzHm9Mnwu0PWX6O5v2rPuhf7CXi8AiEAoYSfjDEihXjDTTUXvL4CIfQJ8utzqbLxZW8PYnzCxvo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13359510},"main":"main.js","engines":{"node":">=22"},"gitHead":"c7ecfe308a62d6a18dd28a69cac0b89446dea674","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.82_1783504386475_0.35796881533912384","host":"s3://npm-registry-packages-npm-production"}},"0.8.83":{"name":"iobroker.nexowatt-ui","version":"0.8.83","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.83","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"19a01b988d2d9988a3a8f74e07e2eca1d08d95e6","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.83.tgz","fileCount":173,"integrity":"sha512-y8CK/yXawa5ZGpQ3zEkrHkUFAYkL8hmpx9bv1b27BSkDUI8zViSRIw0NTRGbzPxQqCmP+YaGbcq3NYiXDy3+sA==","signatures":[{"sig":"MEUCIQC5El6Gmm9aIj/4O4y7Z/jegBZFQLiXYuJ7tPq1bFvygwIgSV9ixkB5oageT0PF8l0yiJ61w1/XMm1o0gMdPRn8Xyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13371875},"main":"main.js","engines":{"node":">=22"},"gitHead":"375b528528ed1858fde5fce36d6883d29fb1e8b5","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.83_1783513783214_0.4392337185807247","host":"s3://npm-registry-packages-npm-production"}},"0.8.84":{"name":"iobroker.nexowatt-ui","version":"0.8.84","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.84","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"585a402b012cfb5661b398301cbd550caf033ad8","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.84.tgz","fileCount":173,"integrity":"sha512-pDbh3RzXNBh3mzZe9Z0EZ+b6rSNZ1A/W+DxZM7J/p0iak9Q1WURufCis3bPHzrNO48m2Xhf5zSWOcdsy6gDlVg==","signatures":[{"sig":"MEQCIAJY1Orppr+NKWPtchzMd/hqFqls1ONaJ65vTQxqCyrMAiA8BfRAkfKcuv1i5NY9n1CAVL87UoEHWOzSIDsJv6wEEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13380994},"main":"main.js","engines":{"node":">=22"},"gitHead":"9a43289f2f841a30233ec8db6c6336c29c168d44","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.84_1783529082210_0.509144401319537","host":"s3://npm-registry-packages-npm-production"}},"0.8.85":{"name":"iobroker.nexowatt-ui","version":"0.8.85","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.85","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"7dfe26aac9cdf77cf4db1b271c55402bd9d1fd46","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.85.tgz","fileCount":173,"integrity":"sha512-ZPhIdNl2b+HJvbC0E0WebrXjiGjeX2Gqs0KofYPMGluNtXe2falUSQrqDTjUFZjAENwA1pkTJohQDgV0bvTeRg==","signatures":[{"sig":"MEUCIHgah+hVB+R1W/5x4FhXLhbdYN1hogepQQ08en+3lRUbAiEA09zYibk3mYv9lMxoLtbtL5B1Jp6lk4SU67cZuZvAKYw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13383672},"main":"main.js","engines":{"node":">=22"},"gitHead":"6dcf98219d3ffabc6ecb47907944ea9decaf0faf","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.85_1783532702650_0.2459899491421247","host":"s3://npm-registry-packages-npm-production"}},"0.8.86":{"name":"iobroker.nexowatt-ui","version":"0.8.86","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.86","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f311ebd85492cfc76b81f94339d996349b0bb1dc","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.86.tgz","fileCount":173,"integrity":"sha512-S3Ajcy0E8FEKoFKK9P+YOS0eTAXK5J0//e8h+reZQC82T7AJNfXQ1fFYg4HmhJ+InUlEH9ra0RUJMmS9ku0qug==","signatures":[{"sig":"MEUCIEkSSvn9m/XoHd6y89gcsKqorsKxWONvNhxIiPTfOpqyAiEA4ZdYTuqS+xeIq63bRZ1M4AezIh661Tgps5DZeKgtU1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13409824},"main":"main.js","engines":{"node":">=22"},"gitHead":"aa09ba2e1fcd40ada3b03e34816c4b049d7c4219","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.86_1783947705507_0.38770626726519897","host":"s3://npm-registry-packages-npm-production"}},"0.8.87":{"name":"iobroker.nexowatt-ui","version":"0.8.87","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.87","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"ec0e6c8bac43d1c9b64b1d7d17d03f7195d5e3e3","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.87.tgz","fileCount":173,"integrity":"sha512-VLownIVdtdkisUJCR64QTkbx1yaR4kfHNm69UVJmkGeOCKDw9Dq45kEdELe9OIHEDt//NVAXCjLMTu6Da9r+og==","signatures":[{"sig":"MEUCIADoSSQ0951PRnFmQE6z0s2TUO8HFsd0VhOipGJwfoNlAiEAt3264wY9EDkGCPgTGl9gITg0SKXdeUmIzsoGMJKSd8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13421653},"main":"main.js","engines":{"node":">=22"},"gitHead":"aa09ba2e1fcd40ada3b03e34816c4b049d7c4219","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.87_1783951358146_0.7450076927887059","host":"s3://npm-registry-packages-npm-production"}},"0.8.89":{"name":"iobroker.nexowatt-ui","version":"0.8.89","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.89","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"a4eb1340cbfec4a4a535c0f97a008be87fed90d0","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.89.tgz","fileCount":173,"integrity":"sha512-n9NJj9KNJY0adEqKogQdM20dNMvc2LbLQOWnGo4rWeqRV4iKx3Bf/D2HC65eCDjnfJPZxCyD1ttoKhCMw40rxQ==","signatures":[{"sig":"MEUCIGtFwfuJX4e6x5Jrx7fwNMInt9pBMaCFoyYk1/PE6e5PAiEA31AW/jdr38rDE6zLUKD8abYouxuuO2sqGbmR9htsSgc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13452611},"main":"main.js","engines":{"node":">=22"},"gitHead":"84037d8329c58949dae67b3afdc1fd9928658f52","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.89_1783966493402_0.41724088554878014","host":"s3://npm-registry-packages-npm-production"}},"0.8.90":{"name":"iobroker.nexowatt-ui","version":"0.8.90","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.90","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"9ffd9923c71c5e70f1cff241e456251e838a8dcc","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.90.tgz","fileCount":173,"integrity":"sha512-3k+t/EjN279ndubtr25BUfzjizLWE1KGsnx6lr5sfQ3q5iyDwMvvAi/Vq2wJpRlbOJO2RSSFJGxSFNRgkk3EXQ==","signatures":[{"sig":"MEUCIQDl6f4dLqdT2uUg5SkU4+pwQ4OkmK5NRDh9bJnoeXTaPwIgA9Zhzr810wYBrs9IryH5c/q7JqWqPMsBw5HbjJqyEy8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13461407},"main":"main.js","engines":{"node":">=22"},"gitHead":"0948101f6527b44ec821060c1576d44750dba412","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.90_1783973593915_0.8643028055687809","host":"s3://npm-registry-packages-npm-production"}},"0.8.91":{"name":"iobroker.nexowatt-ui","version":"0.8.91","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.91","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b440d848f9e98d3ee76ff583301e341ffb64b28a","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.91.tgz","fileCount":173,"integrity":"sha512-nq3bkUt1BRdclGtpeTLZNOvEPHSkegP/ETWEKy0tDQCXUFULAXRjanivL8jCBaDEk4rs9ALpJ4+f6/7XQjOZYA==","signatures":[{"sig":"MEQCICortrnKwWM2FxCMMMZPuDBadfHWHnXr2txzKuuwkSTrAiABxmyFsCISqFqZzsVtF93yX1GfKgzDoL1CNiZ7gPhlzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13463771},"main":"main.js","engines":{"node":">=22"},"gitHead":"84037d8329c58949dae67b3afdc1fd9928658f52","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.91_1784026706606_0.027768947764400975","host":"s3://npm-registry-packages-npm-production"}},"0.8.93":{"name":"iobroker.nexowatt-ui","version":"0.8.93","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.93","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"17db6a00e2e99f783515c5362563f3d9c8696351","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.93.tgz","fileCount":173,"integrity":"sha512-xLdpAaO4nKHzn6eJptsHLw6ME26UMsl6Bs0JgJR15ApVG7EtQnP0KTJtsto4VzZACs4P1BvJmUvb/erB1NHhyQ==","signatures":[{"sig":"MEUCIBZ8AyYLEdZv1xnrtNCjJB+ht0O8kzKhbPg8fYwIF80zAiEA8kqxeINGZBTQE0C/sTdTVcb8owC0k2zztFcxk3y4+oQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13498094},"main":"main.js","engines":{"node":">=22"},"gitHead":"21182d4483da9f855e639a63744ff493b62f8881","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.12.1","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.93_1784030699254_0.08012599930180264","host":"s3://npm-registry-packages-npm-production"}},"0.8.94":{"name":"iobroker.nexowatt-ui","version":"0.8.94","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.94","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"5c72e137da72f715385055280be06f768f0537a7","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.94.tgz","fileCount":173,"integrity":"sha512-XdiETY3xMN7ytKvb0fQT1wXq1ckYk3hyDrbPbRwIjm5vPNzybPqUD34tdGpwXRf51BWoO3Q/u0seo4gtzx4Kkg==","signatures":[{"sig":"MEUCIQCdfKIndC4yszEZZcFOxFwoN7XVYa4s/wTzz9qDlcEGSgIgSA5sC9hlHo5AIZ5qYmdWtIGGdOjlFU5CG8ZLCo5ac+w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13526265},"main":"main.js","engines":{"node":">=22"},"gitHead":"bd62960f59e1702ef3732e4049892502da438eeb","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.94_1784058336685_0.7618858575417684","host":"s3://npm-registry-packages-npm-production"}},"0.8.95":{"name":"iobroker.nexowatt-ui","version":"0.8.95","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.95","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"3a00c6f4fac2c6c0b5c8884475827c8bee36a5d5","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.95.tgz","fileCount":173,"integrity":"sha512-V+tFg13XMg+kVYvRMShb1SDX776+Px5s1ad9rMVxkcWNf8YVuK+3Z8SVB34c3YKwYIBuv1pWs5uR6rOqhHno0g==","signatures":[{"sig":"MEUCIHK9Cpp0zHkAfQYaKdQWU+SNlacNxvXMa5ZDK0uDtj4SAiEAxUx+4AJazvMR6957m3EPc9tQ1LlFzcx4/ban+gGT+Jg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13553022},"main":"main.js","engines":{"node":">=22"},"gitHead":"aac02c249d07fd8333724ffe433a84dd4001f040","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.95_1784095647096_0.9987858694893759","host":"s3://npm-registry-packages-npm-production"}},"0.8.96":{"name":"iobroker.nexowatt-ui","version":"0.8.96","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.96","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"077ddbfc5497442ef01651994a023541c9f99900","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.96.tgz","fileCount":173,"integrity":"sha512-rOD8KgaztfZzHI6ctegOnzU5iL4TfJfsPYozO7Rv0dAMpj2y90W6y5Ekidd8HIRU6KmQktpocIzlWyM90IusoA==","signatures":[{"sig":"MEQCIHSlE7tC9CYnvH9gP019AfsmA4zDM68OOdDuBYbCJMDsAiAvY+yiCAkNX7NRXqFJ/gWCNBBG2QG4d6JwhQimg+QnHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13571034},"main":"main.js","engines":{"node":">=22"},"gitHead":"1c86f95eae6b35336ac8b61f663e3c48b8bb2a2e","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.96_1784106507060_0.3628273982139407","host":"s3://npm-registry-packages-npm-production"}},"0.8.97":{"name":"iobroker.nexowatt-ui","version":"0.8.97","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.97","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"484380dca5037fe3e44558109d7c33a78a4baeb5","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.97.tgz","fileCount":173,"integrity":"sha512-pdx55bG6kpgNFgdrrZE/TggaAkwRFbMMW+N/gMsUKwIucOHmK7JwNWSM7ZLUAoHj9vNOgmXxwh4RINjFZWdljw==","signatures":[{"sig":"MEUCIC4u03C5Hdcg7or7q/0uykDcMgYl5icI7+JUXAHjZPBnAiEAi3bRwJDgRCiZkbxUxnYv7W2Nz3LPxBZycVvQSeQe/jY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13578448},"main":"main.js","engines":{"node":">=22"},"gitHead":"1c86f95eae6b35336ac8b61f663e3c48b8bb2a2e","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.97_1784109679178_0.061836614605440765","host":"s3://npm-registry-packages-npm-production"}},"0.8.98":{"name":"iobroker.nexowatt-ui","version":"0.8.98","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.98","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"17b844eb8da5ea26ed07154e084cc1714d721fda","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.98.tgz","fileCount":173,"integrity":"sha512-e8XmYC4YTWUSOCn/F85dxzusZWEpiw9B6PYqVbfhLt49kL2B3wMZXg3mnnvRtZ/xYquEN+l7VuVGRzear0pf6A==","signatures":[{"sig":"MEYCIQCh4J8N1Vuvd/e+81eok7GWwCZ4jGLshKF1kUQ7YxkS3wIhANkHCNJcdNvCVdbGj48AOQLSyoJvDF5S3SgEd9vTi8Hi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13622159},"main":"main.js","engines":{"node":">=22"},"gitHead":"8d103bd7ee5e31c3c8f680d9e5848e5ab3b48be2","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.98_1784117805478_0.9065743829042647","host":"s3://npm-registry-packages-npm-production"}},"0.8.99":{"name":"iobroker.nexowatt-ui","version":"0.8.99","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.99","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"297b3b246bdaa83c9be7d387452e1b75374c54fc","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.99.tgz","fileCount":173,"integrity":"sha512-LwDhIo41fhF2izkD27Db9plD1MZz1hmUJMeEZcff48RWVWJRqwF+3fW1AGWQsNTMLemOsQFmmp6NRYPg6bYeGQ==","signatures":[{"sig":"MEUCIQCk6AjTXi44eWZsW+L5kPDZTmcExrBWNNC2k8D2vV8LWQIgZtz2/AlSSMeQ4U9aRewluv03YvhovFeuSOHoy3mvv3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13682172},"main":"main.js","engines":{"node":">=22"},"gitHead":"421c2e6a01db3130afb1f18ad730f4bd491caaaf","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.99_1784136332474_0.5258013180306667","host":"s3://npm-registry-packages-npm-production"}},"0.8.100":{"name":"iobroker.nexowatt-ui","version":"0.8.100","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.100","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"723169229cd8f6e21a214eb056ed61a0912842bb","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.100.tgz","fileCount":173,"integrity":"sha512-QK/9kIMJVoD33CghYKSO96GXeJ/NyEw+JgHq2h5h8doGwkVmG7W9q3nilF2f7CZJq+fBwHnHKpZ/q4XjU6Bv4w==","signatures":[{"sig":"MEYCIQCsM750k2OOT97YWxyfyIuJ+KW1C1gqaEHBUE1L3IM3bQIhAKzLZuGlQRxVBU37QtbbBt1eDpjEMnFhZad3VMOM6bNQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13736327},"main":"main.js","engines":{"node":">=22"},"gitHead":"418069915ffddf6db5262c6f2d18266f21f6bc40","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.100_1784145411329_0.5431392457275581","host":"s3://npm-registry-packages-npm-production"}},"0.8.101":{"name":"iobroker.nexowatt-ui","version":"0.8.101","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.101","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"70e74e467fb9b18762313f019d122ab78a3080c1","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.101.tgz","fileCount":174,"integrity":"sha512-UdhMuNw6WqBPe+iBy+bxc6FndXZ/Mt19qc17F6cROhpDQTkXXIwSNI1x9e6Nln3yaVPbqEDPTbGMptCeWNHxWQ==","signatures":[{"sig":"MEUCIDjNxvXMDUwYHLLwx0D0fOv/9ikvXUFyGgfL31+hlJf3AiEA2A0seRBaJ4OU6ttM1PuH8U/+wO3S7mYf60T0AL78n4k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13774854},"main":"main.js","engines":{"node":">=22"},"gitHead":"fb3db0c72467d5dd3156cad5de76f7ebb2fee2e1","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.101_1784173675048_0.06152784137479128","host":"s3://npm-registry-packages-npm-production"}},"0.8.103":{"name":"iobroker.nexowatt-ui","version":"0.8.103","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.103","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"9ed3b6dbc113fd208b0826e279178aeab4dbfab7","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.103.tgz","fileCount":174,"integrity":"sha512-/MzzsnMtICucxyktm9FazRWNpW0RshGB4lO1tfwx3eScp0p8EH/lnHQunmVzfD1pzN3dd5ObmSxk+uO1jx5PwA==","signatures":[{"sig":"MEUCIFMEmO7tH4IGzwS2NNsKay3yqjv9K81ekQGt9Th/E5+JAiEA9cwPKje7roqCIAVL3Jo+bJTlbeAcQbWJGghSjcNw0Fk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13789613},"main":"main.js","engines":{"node":">=22"},"gitHead":"35930a27e095456c115b215ce12501505da5dd9b","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run check:ts-nocheck-budget && npm run test:field-security-hardening && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.103_1784202920303_0.47995114905462666","host":"s3://npm-registry-packages-npm-production"}},"0.8.105":{"name":"iobroker.nexowatt-ui","version":"0.8.105","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.105","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"c7833ad676b97f03d74945492b1bfe90da7efdc6","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.105.tgz","fileCount":175,"integrity":"sha512-Tzq8AdsmP8ZkD7wI/ftKUB7xhf1B2p7mK56uKcr206xopJN0X2kH2EeKhw1cZWL7AKPvIYyexNRRk+gUbbQmiw==","signatures":[{"sig":"MEUCIFG6xYZR1AEpiQ12liUDkRdXbVSZwY/j7a4LVs2pQk4wAiEAxmBPvQHh/FVS9rRjYkuN5dErymL+Kee9ABpEgkv5vHI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13812693},"main":"main.js","engines":{"node":">=22"},"gitHead":"35930a27e095456c115b215ce12501505da5dd9b","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run check:ts-nocheck-budget && npm run test:field-security-hardening && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.105_1784209020814_0.1785105670317788","host":"s3://npm-registry-packages-npm-production"}},"0.8.106":{"name":"iobroker.nexowatt-ui","version":"0.8.106","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.106","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"48831810841303dd90f4bcd1e4556c64eb6c3cb8","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.106.tgz","fileCount":176,"integrity":"sha512-3CD7nFsYr4yTHYrCeuqR80/CyXq/kEl2PjDcMoSj5fGYvvld+x3YUfeSC0m9Aga+IjukHGvH/Xe/8j0SrRq0Kg==","signatures":[{"sig":"MEYCIQDNA02qhsK3SnE+i4DVV15yRqJ5C5EIOJ0Zd89b86vKHgIhAMAFLT100CLixv6WWygqCF0zxL7cEwgAR5E61DZj4Iwg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13825290},"main":"main.js","engines":{"node":">=22"},"gitHead":"b0dc571f33257950c6515a85f8bc1dc866b5e1e1","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run check:ts-nocheck-budget && npm run test:field-security-hardening && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.106_1784215405690_0.9082194828946542","host":"s3://npm-registry-packages-npm-production"}},"0.8.107":{"name":"iobroker.nexowatt-ui","version":"0.8.107","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.107","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"dde5c6efe5b20a678d0d2d5a0c810ff3e565e975","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.107.tgz","fileCount":176,"integrity":"sha512-k4pstSPEptxYwpeLkFyEk6LVeRt1W+KHuPZZ3xhbachKC4hUnI63ctfd3XAJ/dqOUNLhQNlQsMZkLGjB92jyug==","signatures":[{"sig":"MEYCIQD5prnbaHHAu+8zortlu/lTmIsB53DTgOfJCgmtvTSYXgIhALE2PfUbu178/FeprJfe4P4qPY5YWrPeEbzeWS5Rewj6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13828885},"main":"main.js","engines":{"node":">=22"},"gitHead":"d88dc9bf47a1953d37dd565ad6b1e5d58c76fced","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run check:ts-nocheck-budget && npm run test:field-security-hardening && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.107_1784224054145_0.10955407171006426","host":"s3://npm-registry-packages-npm-production"}},"0.8.109":{"name":"iobroker.nexowatt-ui","version":"0.8.109","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.109","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"c1d50a75abf350217174a19ae787234f1473d20b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.109.tgz","fileCount":179,"integrity":"sha512-H6GOmtZa2sqIaAIsVE2TgAQr4pn9/cDmHgDRnsqxGTl1vmM384ET2fisgIo3nmTr51nwOEmCM0jxVmuZ9BzGew==","signatures":[{"sig":"MEYCIQCpRT3Z4SPnJDQhYVHfzkDIZib67jzdyqwjGPw1E1oDQgIhAIJ7vWP+EpwJHlMaP4kzqLt4BUUO90OEs2xG3ksx4LNj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13882509},"main":"main.js","engines":{"node":">=22"},"gitHead":"d88dc9bf47a1953d37dd565ad6b1e5d58c76fced","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.109_1784269477944_0.2353251045059539","host":"s3://npm-registry-packages-npm-production"}},"0.8.110":{"name":"iobroker.nexowatt-ui","version":"0.8.110","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.110","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b4c1ac6b4a4c4850062e3d0306940bb3926beaf0","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.110.tgz","fileCount":180,"integrity":"sha512-1Toch03zYzE4NXYBbZSpxL338PZuuHP2mcHHWqpdK+lLH/nDh2SHm4jh6N1LYwJt7knqG9dey3ZT+ad+v+v37g==","signatures":[{"sig":"MEQCIEsyitFIC3rgtbyyPuosddNDw6WhDkfSZSYPi0EXWGlXAiBBgZrlr83pAldLQ7HLMAVD7vfGxJdpbh6gi2tSVvaZhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13911088},"main":"main.js","engines":{"node":">=22"},"gitHead":"ae165c3ebeee17f3f33a7ce2f841282782eac377","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.110_1784280996934_0.6013127674163503","host":"s3://npm-registry-packages-npm-production"}},"0.8.111":{"name":"iobroker.nexowatt-ui","version":"0.8.111","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.111","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e8bd70d08a7f7fdef7e16cbaec672ef69ea55da4","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.111.tgz","fileCount":180,"integrity":"sha512-Avq4FYJ1Yn2nekoRwSLWtL+kdWLgsH39dgQ5Xhc0WU3QHqH1Zz+SaG+ugRtSVX9Oo2jeZMuJ/Qnggv854amssQ==","signatures":[{"sig":"MEUCIQCAG3INY047gKCgGDSbKEc0D7ycuZ3rDQo0G/SFQNw3fAIgHHWJ1pj+mUy41IyxeYNFDrnSl34qunHU/9A6wBf29Lg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13934579},"main":"main.js","engines":{"node":">=22"},"gitHead":"cd052866dde21d5fabe4258774b9fb7246d846a2","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.111_1784282358083_0.5553276329285279","host":"s3://npm-registry-packages-npm-production"}},"0.8.112":{"name":"iobroker.nexowatt-ui","version":"0.8.112","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.112","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f1c9578387b1c995a9a4f799713527db8c6b1c7a","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.112.tgz","fileCount":181,"integrity":"sha512-p8ANNHgX3PK0c9V0wTlZr9406nLK6aBLs2eJZscoPvG7IqrfN0o49XkKskYtC5wiEJeUDYVuFw7h6rpj8FSdVQ==","signatures":[{"sig":"MEYCIQD5YnSakW2ihopYu0bzAsn2VjsVVi9DAdf26jbmmqCDUQIhAMNQmNcb3xijwipscTflTDEek4+mCiIH57LGZ0dIHh7k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13940786},"main":"main.js","engines":{"node":">=22"},"gitHead":"cd052866dde21d5fabe4258774b9fb7246d846a2","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"node scripts/verify-live-energy-flow-15s-cadence.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.112_1784287671519_0.342829688010174","host":"s3://npm-registry-packages-npm-production"}},"0.8.113":{"name":"iobroker.nexowatt-ui","version":"0.8.113","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.113","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"c483c466500852c07808827910db3bd3941b83e7","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.113.tgz","fileCount":182,"integrity":"sha512-ZthF+DC5xBMr5lGu4e86I1XQN+Qi5I5Y6maczwUe+PTwdJjg7/zRdvRX0+PHS1jAq0nGvbFFg65VPfCluf7vLg==","signatures":[{"sig":"MEUCICGH2DjLwjhcnc5SFH6cMeY9J+9fbP5bIyV+QT7kldykAiEAi2Vm6xwmoU35kknrJ8TjyjOLXcLoRR4lUyuA9o/hjp8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13942499},"main":"main.js","engines":{"node":">=22"},"gitHead":"c810fe4ca9d39ecc576d966174793aaf26218d79","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.113_1784292470273_0.6581308718329133","host":"s3://npm-registry-packages-npm-production"}},"0.8.114":{"name":"iobroker.nexowatt-ui","version":"0.8.114","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.114","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f1c5d88f3bb93d283a57ad9bb57af0b27dc913a9","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.114.tgz","fileCount":184,"integrity":"sha512-uUIpLvXRXxPldLA05toC9BHEat4C2byVu4RHqoubesJnFwVjPoedbVhXLEdhZ61UY7Xh7uMzNs15uAVnBhLBBw==","signatures":[{"sig":"MEQCIBawvcy7KyICyM/WoZS6cyMwrVrkK2IQe6gwJD8HU6/YAiB72E0/yZ/msLEY19tKt6cUuvDSuwuPlAAaMojkvKM+cA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13957194},"main":"main.js","engines":{"node":">=22"},"gitHead":"38be5c2f4641c2013b6c21f41c961dbb135bdc12","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.114_1784309120972_0.06647261846381358","host":"s3://npm-registry-packages-npm-production"}},"0.8.120":{"name":"iobroker.nexowatt-ui","version":"0.8.120","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.120","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"61ff500ef0cd08e625ada3467353491261a3ace7","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.120.tgz","fileCount":189,"integrity":"sha512-G+rK6FG3XblaSeD9eCD5Q4AGnUPvhdRU6AA5hG7U9FkaNWwkHYnmFZ1L8uaPpJAN3VrykKPtdt5+5ZIg7/lS0w==","signatures":[{"sig":"MEUCIDIeSStZOACs1MHqjN+TWndhaJNyi3nHWVRMsJSXXZjaAiEArFCdGfmlk8WNWaQpNbDb5JiSyIHeGUAsD19bTzJcmTE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14098332},"main":"main.js","engines":{"node":">=22"},"gitHead":"c8bfee9f4ee672934fecb2b8a10fd0febbfd3434","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.120_1784371526643_0.10974101108671475","host":"s3://npm-registry-packages-npm-production"}},"0.8.121":{"name":"iobroker.nexowatt-ui","version":"0.8.121","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.121","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f2d4e6eb10b72904f62f1e892979bac2957a30d2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.121.tgz","fileCount":189,"integrity":"sha512-gqaf7FyIXwe944prEUWar2227GddZv43yC1nhyWReflbYnHsYFKb8/A5JJLxcei0uRgm1kWsmzbkzEsuZ2lseA==","signatures":[{"sig":"MEUCIHcsbStCBbfs6CvSEtw6QbPr01wbMKa/KivdrM6UlgYfAiEApnfsSG+QqvUsOULp1OKfzsYLwPcifrTS905rv5t1XGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14116650},"main":"main.js","engines":{"node":">=22"},"gitHead":"9c77ce4be9bbf505b6132bc759f3aad292828d93","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:module-lifecycle-para14a && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.121_1784376376222_0.3274889781825929","host":"s3://npm-registry-packages-npm-production"}},"0.8.122":{"name":"iobroker.nexowatt-ui","version":"0.8.122","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.122","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"72b7ff45526a1736c5b8d70bd9a73b8de71b6212","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.122.tgz","fileCount":189,"integrity":"sha512-WhFDBkBUba7jjcVJOGptFv65hBSY00JpjUnSKa7pQyNXFX7tAnzUt2/bEuXPIFs+kvqGMkKUmOLpW6iyx7Icsw==","signatures":[{"sig":"MEUCIHshX8G/sTRa0mcBwFH8BzASR1COHiR6p7esue6IzPUoAiEA/Dlbo8IniFWmTf7ef54IKA8iSH1YBfWfOD9EHOeK75o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14129938},"main":"main.js","engines":{"node":">=22"},"gitHead":"9c77ce4be9bbf505b6132bc759f3aad292828d93","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:storage-farm-dispatch-recovery && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.122_1784382735527_0.07753186046127536","host":"s3://npm-registry-packages-npm-production"}},"0.8.123":{"name":"iobroker.nexowatt-ui","version":"0.8.123","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.123","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"cdfe259df466392bb57201cca3fcfe36cc6f16ac","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.123.tgz","fileCount":189,"integrity":"sha512-k8AyqJeTa2VpeCj8AaMmtPiSy/ecurDxXiEHiLdUp/dpLpmNhCsG7nZGQ1UxuGCldGUzImp2+LmGxNT002qOaw==","signatures":[{"sig":"MEUCIHexdWHx3YBh//WC8imz2Wal54JLh9M6nlYEV+LxdfMGAiEAtmi/8SGLdZnIxa+y3TDJimEowBtu+wNN4ec77f+l9VM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14143174},"main":"main.js","engines":{"node":">=22"},"gitHead":"170c9685354e41ea3c1804fed2403f349e106246","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:storage-farm-dispatch-recovery && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.123_1784389010534_0.6683430396497307","host":"s3://npm-registry-packages-npm-production"}},"0.8.124":{"name":"iobroker.nexowatt-ui","version":"0.8.124","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.124","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b945e01fc271e25c3d26ecdff33ead2c4c562962","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.124.tgz","fileCount":189,"integrity":"sha512-trdHsPfXEe2QZy3Cm5Z8DggAxzQn7vsO2GfsRFR4h5n1F27N9GyOzHxUQ1gmA/59UoQQTkxmKANHRfSyfLTiYA==","signatures":[{"sig":"MEUCIQDu+NM6MERbw8HqADYxDy3JgOkVXOv4dFcM0WWue1QdDgIgK1roOZ8XGnGHJslzxS6udJ9nQx56nXPPdUftRUKMj4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14167756},"main":"main.js","engines":{"node":">=22"},"gitHead":"2dd58a88180b0bf50950710b19d9b716d59f75de","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.124_1784394330814_0.368807102415188","host":"s3://npm-registry-packages-npm-production"}},"0.8.125":{"name":"iobroker.nexowatt-ui","version":"0.8.125","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.125","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"dc41d08035755ad81c81e75e3f14a13204b8ec03","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.125.tgz","fileCount":189,"integrity":"sha512-b3sQ8X13GRgVP75x4fq6KY9J93s29AMXlUIK3+hv4Mr/StBZZYyNdpGzpRARLJ1FIxcPuZx6BDelyiGKKvLgNQ==","signatures":[{"sig":"MEUCIQDn6oNxPqoB2TI89+Khy9RDsvGg7dokWfw93ervNvfy5wIgIWDSUaPrulWjZQetIdffjeIX9cy6jzAXBe2H6nq7B+c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14164899},"main":"main.js","engines":{"node":">=22"},"gitHead":"6e702f0ad977c88f3210e77b24c4d602827bfe05","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-actual-power-nvp-balance && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.125_1784442444117_0.5403580028577972","host":"s3://npm-registry-packages-npm-production"}},"0.8.126":{"name":"iobroker.nexowatt-ui","version":"0.8.126","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.126","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b761428a2d45e4bdaec0edbfc34d48ce3ec415b0","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.126.tgz","fileCount":189,"integrity":"sha512-/Tf3YJ60FtUf7OnTlQZZLoBwfr8K05j5wtughNA4YNkJkw/RMaU1292qSTDrzo+1VzCOIac12igD4fipiSYHNA==","signatures":[{"sig":"MEUCIHrL81zaUaPswux+FRcyWLuYsOJgQSfq4ddpoIuyhNdwAiEA2YHU7o7aBkYSJC7sfVYhEXEq2NrQ4/cJtaS2fqVIgOU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14189907},"main":"main.js","engines":{"node":">=22"},"gitHead":"6e702f0ad977c88f3210e77b24c4d602827bfe05","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-actual-power-nvp-balance && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.126_1784449467766_0.9966096726171898","host":"s3://npm-registry-packages-npm-production"}},"0.8.127":{"name":"iobroker.nexowatt-ui","version":"0.8.127","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.127","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"7908f11ecaec4470c952a526f6c88874a03e3db1","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.127.tgz","fileCount":190,"integrity":"sha512-sLCTvv7GTYzywyIsVuIliyMl2h5q9NodpWkqCbNF5SdzaolPATN/ZDqVD/zdPrqoTm2vpFGCjSRHq1sF28xogw==","signatures":[{"sig":"MEQCIB04wQKcTrrH54Wem47k4gU9P8CiEazbe0wcdte29lNoAiBlUQ/Jw77vWY8n42TF4bFjkOmuYkPfsN4FWnd/7/F1Ng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14226839},"main":"main.js","engines":{"node":">=22"},"gitHead":"1d5d38ec4e5882f4cd2453869d80a1cb58a00455","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-actual-power-nvp-balance && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.127_1784454183693_0.45206533082539235","host":"s3://npm-registry-packages-npm-production"}},"0.8.128":{"name":"iobroker.nexowatt-ui","version":"0.8.128","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.128","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"cb25d6ede9150b186aa980a461733936173ea303","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.128.tgz","fileCount":192,"integrity":"sha512-MGL0QAkU1MZIMeURUIA2aE1C1VPJuqO/XNes4/Ly4fkCYxg/ajn7En/YBatI1ETPi7z6pkd4v082+CBMbqc78w==","signatures":[{"sig":"MEUCIG3Cpk5fnkURBjU2JcBtTMi7jiccwHuGqB9P6JzXiIDnAiEAvYIHgCP0kYQ/up5qkQeRkaR2NeebqcqWUCamzoqDV8w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14264104},"main":"main.js","engines":{"node":">=22"},"gitHead":"499b3aaeeead311a06567fba62684bd30c3e78d4","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-actual-power-nvp-balance && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.128_1784473563913_0.15048169618102092","host":"s3://npm-registry-packages-npm-production"}},"0.8.129":{"name":"iobroker.nexowatt-ui","version":"0.8.129","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.129","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"6a045da19eb5fee37a6f91981d595630fef4284f","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.129.tgz","fileCount":193,"integrity":"sha512-/tttEBx1PZbcmGCeFPcpNW1rUxbP6CgZmgjQp5mdW5ZQJ9v56whc46Alia6V72yhjqYb1wq1slzTdbX9MdmP8g==","signatures":[{"sig":"MEUCICLjXEwtQshHh3kQp9pemjPcHINAwraX7g7n0HUL6Gq1AiEA7tlxOocpHzr5ZSnimBpz/HdIunRoKDSuZfSqPQ4WGFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14353839},"main":"main.js","engines":{"node":">=22"},"gitHead":"764e197b44a6ba7fbccbbe43ef2eb8f76878cb00","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-actual-power-nvp-balance && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.129_1784491735475_0.08782313553027521","host":"s3://npm-registry-packages-npm-production"}},"0.8.130":{"name":"iobroker.nexowatt-ui","version":"0.8.130","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.130","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"9d2b5132084c550545bd1932862ba14b4e2ec4e2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.130.tgz","fileCount":194,"integrity":"sha512-lO0fOzOV8f66OV4VI1mrVEUFWdOt5fcrbF0iJmWtQt8UZdZKY8eFXJSl60v6l8CHXMxxJr1io89W6fpuGvWTCA==","signatures":[{"sig":"MEYCIQCO3n8Ps5P48P5jhYvYTlphPPgJm+XvGg8KzsH+96cZGAIhAJ7gvNx3gOuWUAz4SvlROS7gnZAcLzKQ37gieO7aQyB1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14392249},"main":"main.js","engines":{"node":">=22"},"gitHead":"d8bb1ad079b0835db7d960a434276af7b5544054","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-actual-power-nvp-balance && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.130_1784526944547_0.5478861566713631","host":"s3://npm-registry-packages-npm-production"}},"0.8.131":{"name":"iobroker.nexowatt-ui","version":"0.8.131","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.131","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"db4727e3d04c7a10acdb8c858036b2006b43a3fe","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.131.tgz","fileCount":194,"integrity":"sha512-dtqcJmKFuR85M0KftNnrHXkMw4aaypmhAgmTTBj0Wy/OPuANWYhWHj5tlnO86v1TBwHAASx5p3Sorm7JmR1gJQ==","signatures":[{"sig":"MEYCIQC+OmNzt09LryLWaGE5Ms1yPdmlkyyVuMjhSrgLw2g0pgIhAN7hldkZ9G9aNlyYY8pPJKkPfnV51hyw/JaSQ1GUSuwl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14394127},"main":"main.js","engines":{"node":">=22"},"gitHead":"11553e9a1f85f502df7dc9ab81b4def3438f8c06","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-actual-power-nvp-balance && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.131_1784530931964_0.7827696862863707","host":"s3://npm-registry-packages-npm-production"}},"0.8.132":{"name":"iobroker.nexowatt-ui","version":"0.8.132","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.132","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"8645f289522d37b31c7c1ca47732455b206df085","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.132.tgz","fileCount":194,"integrity":"sha512-Z+UEwY5pFKhm9idyY0dRdE+Zb61G3KLwE85NmXlkKRlS8aSyMY8IGkLoONEcSQJdUXUfwdtzD4cD1tsJQhlpHQ==","signatures":[{"sig":"MEUCIDReof447+/S8mhllIn/k09ClNOz6AyIrKmcgsXBxMJYAiEAzq6abDeHWz4memRUvwkuEWiuLE6RCPX0PrpgRJp1p8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14418816},"main":"main.js","engines":{"node":">=22"},"gitHead":"94015fd835861de865a4278a8a98aac93e96f3a1","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-actual-power-nvp-balance && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.132_1784544884541_0.35322428120647986","host":"s3://npm-registry-packages-npm-production"}},"0.8.133":{"name":"iobroker.nexowatt-ui","version":"0.8.133","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.133","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"12dfbc89e49faea872183965e936a503831d7ffa","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.133.tgz","fileCount":194,"integrity":"sha512-0nZekXbnap1irOsPRM3gPeu7mneQzQ5q+50CtuaRk1SXyFwudPwM9q1K2bttm1+fp4IwWcOOWv1eac6aLTAilg==","signatures":[{"sig":"MEQCIG9qrDqBjdRiJRqrsebp4GMJaSNOF21ZvR8QEtX3rQl9AiAaB/bHlclYJHWhOZmceV/IOMr5SC7ld7kxdFKOOk3eNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14435830},"main":"main.js","engines":{"node":">=22"},"gitHead":"94015fd835861de865a4278a8a98aac93e96f3a1","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.133_1784552794299_0.8452645506183645","host":"s3://npm-registry-packages-npm-production"}},"0.8.134":{"name":"iobroker.nexowatt-ui","version":"0.8.134","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.134","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b9866a63702aabbaf5a4d13bbfe2bab20ebabd2b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.134.tgz","fileCount":194,"integrity":"sha512-e250giTpg5PDqQ2TdatVG4DfiJwIUcxvxcrzXP2jIjm1pbxQXfwCWDRwiwSTUM3QWquvXMA/WTzhwIl8S4hwYg==","signatures":[{"sig":"MEUCIAfQTHjsflfnnfJuXIpPuOXo0oaK5LK6jABFQQGOUHJrAiEAiv0hmyHo524+hb4j6WS9ygAhYwwuPGiCIi9B1WmCvD8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14468604},"main":"main.js","engines":{"node":">=22"},"gitHead":"91a919fd0b66f5cc60fc70d74748b2a44f5ae722","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.134_1784572389649_0.6782967846145562","host":"s3://npm-registry-packages-npm-production"}},"0.8.136":{"name":"iobroker.nexowatt-ui","version":"0.8.136","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.136","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"ad71dd8742744ac637e08dab9dc876534967c659","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.136.tgz","fileCount":197,"integrity":"sha512-gByhqNQZorXRRJhs3fCzIv+cX6kRojFYIWYBaha5giIkYia33LixVImhsGZkjPx7FyMVxX0a23j5KeRChMRYIg==","signatures":[{"sig":"MEUCICSYQfSBK4rmnMOqEV55rUECIF1OXmydIs1QInhbr4q1AiEA6xig+TbAJf2N7vDiErxzdfgKYcmmxeutF+UOYWinrJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14496237},"main":"main.js","engines":{"node":">=22"},"gitHead":"df274c6a3325533ba1be112dca3ff334b21ad003","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:storage-anti-export-hard-gate && npm run test:history-flow-coherence && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-guard && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-flow-coherence":"node scripts/verify-history-flow-coherence.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-anti-export-guard":"node scripts/verify-storage-anti-export-guard.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storage-anti-export-hard-gate":"node scripts/verify-storage-anti-export-hard-gate.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.136_1784743170602_0.3118183625894577","host":"s3://npm-registry-packages-npm-production"}},"0.8.138":{"name":"iobroker.nexowatt-ui","version":"0.8.138","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.138","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"cf425e76722f45fc54b1350979747c48e51c8f1b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.138.tgz","fileCount":198,"integrity":"sha512-3wAg+Y6kZjbJfgvOC4+AXTe8Tr4furc3vwQ65xAFLOM5lQ2N6gavnkUSheSJ1zrOAeaF/oWutjlOSqlwKNR8Bg==","signatures":[{"sig":"MEYCIQDwQA6Yiq3sJG+WgLXFL4vE/dcxJOr4tNNa3ZoXdGnaWAIhAMfiQQEYfM5yuN0DDQFjTjA8DDsAYNPgkMVD19RxO6Qc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14562459},"main":"main.js","engines":{"node":">=22"},"gitHead":"4cfaa9fcf6754671cf159601e9cdad839606a9b6","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.138_1784789189363_0.5301628988976741","host":"s3://npm-registry-packages-npm-production"}},"0.8.139":{"name":"iobroker.nexowatt-ui","version":"0.8.139","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.139","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"06dad4c50a184c1af508fd40390db572f746a27f","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.139.tgz","fileCount":198,"integrity":"sha512-O6biKK65yhgb9v5YrMuHYXOV3/NK7g2pvVUolPCyoyyqjXHeTy/NqKDNAeWcrGUfPfr3KTF+BWivCCN17dXdrg==","signatures":[{"sig":"MEUCIFtJLb9bYvkK5vZ8f1CZ/O8W45ghF3RBqLvL5D2jTsvkAiEA5tiZ/FLa3B805zHg2RXrJenkgIB/hk/M5ir4TeSlqSs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14571167},"main":"main.js","engines":{"node":">=22"},"gitHead":"4cfaa9fcf6754671cf159601e9cdad839606a9b6","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.139_1784796868008_0.7704954551013794","host":"s3://npm-registry-packages-npm-production"}},"0.8.141":{"name":"iobroker.nexowatt-ui","version":"0.8.141","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.141","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"8fb833851f649c45f03de1223b6ca7eed2816e19","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.141.tgz","fileCount":203,"integrity":"sha512-yTys3Kf1oLygUnvf5qaQBNdafFbEd3mBquj/cSF04+JlTLHQZep59vRT1xCJlcOHMPHQDowW5ZmahpvDi6BaYQ==","signatures":[{"sig":"MEUCIQDzvLa0uic3B/1/VsC9z2CIA16hGZxzBFE7SzwEYqbrGQIgV5TdIkOZu1hN7ItXk9gwfcR6eKFYaeY9wdxkp3SoLpg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14637701},"main":"main.js","engines":{"node":">=22"},"gitHead":"e68d9364f20ced5a71a7aeb32b5e3643d109793a","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.141_1785154886636_0.47654626999248206","host":"s3://npm-registry-packages-npm-production"}},"0.8.142":{"name":"iobroker.nexowatt-ui","version":"0.8.142","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.142","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"32beebb6833f3c68c2760c958f447db0f18d426d","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.142.tgz","fileCount":203,"integrity":"sha512-vBsOZsM2Bb1wfb3VZKNcGgipkrt6TYyz9zCLqJfXCvoMQ62BqFIHubexoc/rB4ml+Xv0XhiG/tjuUuF8Uzm2xw==","signatures":[{"sig":"MEQCIEuMy1enqfQnr4e+4xFqK/uo8ySqWk/f6l1xbTGgUzHmAiBzXeWl3mn+Rrj70t0bNLo9MZ3AiN+QKlWe+ETZ9WGFlA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14642310},"main":"main.js","engines":{"node":">=22"},"gitHead":"9370832847422399ba782e1a4f8b0859e60f1f53","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.142_1785161133798_0.9342061720446448","host":"s3://npm-registry-packages-npm-production"}},"0.8.143":{"name":"iobroker.nexowatt-ui","version":"0.8.143","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.143","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"692b089596a464ba951dab45279720d7c56d1be7","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.143.tgz","fileCount":203,"integrity":"sha512-XEoGjdhCOIc1pXDH5Y66gYOXHS/EWGwH+AljHQ4FzA+Tt482gHo1nBRIscK96I4OqPc1xFVg4sPWqBiq2eBuXg==","signatures":[{"sig":"MEYCIQDbs0pskECBJUreSN7XXfdPiDJ11jWamxWqpPFUNqi44wIhAJBEiMVfH+0mcpQ29ukHEGkSfMBRhQ3xxB+pkVMX/6SZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14683263},"main":"main.js","engines":{"node":">=22"},"gitHead":"ad59ac6359402c2f38bae6bc3ef88cf21118e524","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.143_1785171616452_0.8473565302962835","host":"s3://npm-registry-packages-npm-production"}},"0.8.144":{"name":"iobroker.nexowatt-ui","version":"0.8.144","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.144","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"1e92cd0dcbdf83dbd4801c463fef3f3d5d03a92b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.144.tgz","fileCount":205,"integrity":"sha512-zwssoKM5yEr13f+nh1vR3cdIqC/qQ5UMV/ofyr7WxEW71VCDan8YuWOmgGhGFVZkOTq/BzNk7Z3fmJvxSuI9OQ==","signatures":[{"sig":"MEUCIQDTRHyQfxaDTczsKfGZp6noDhCbZfHAed/KuSNRP8nNFgIgFSfae3YYA41g7cMYnblESjENEMavy/xQl0aqSsps4Mc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14881299},"main":"main.js","engines":{"node":">=22"},"gitHead":"14ebd54a0880c2a3194c39e7c54617b0aeeeeb96","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.144_1785179308447_0.6584494425992722","host":"s3://npm-registry-packages-npm-production"}},"0.8.145":{"name":"iobroker.nexowatt-ui","version":"0.8.145","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.145","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"953b3f24a88a2250f1960f07c8d06c27e2dc7555","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.145.tgz","fileCount":205,"integrity":"sha512-jwEzSJFYLFYLupzm2+76se5Mh1vXxygV0ylV8wTEkUJRm4jqx4eeCpKPyKlfSd2y0MglP/UrfO/BGsTKrOlf/Q==","signatures":[{"sig":"MEUCIGGRwDqKqQOxf37Tx7WusGK+4bZK32VgoNJ8dqfMR/6OAiEAilhKTbF0zGNb63hUc/9xXrxYc9P49GFQB+4b3cbcvKM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14891299},"main":"main.js","engines":{"node":">=22"},"gitHead":"7993063b28f3cb1ecad7d71129cc0dc481093e34","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.145_1785183518014_0.5897628573551446","host":"s3://npm-registry-packages-npm-production"}},"0.8.146":{"name":"iobroker.nexowatt-ui","version":"0.8.146","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.146","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"573929ab81c8411cb35d643c8963c31111a15bba","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.146.tgz","fileCount":205,"integrity":"sha512-LpuyrJI5QXxjc33nY/AgYQVYgXCjBd38or18SCNQkscxCf89ScfR9ziLJG8ZPn7q+NDrkAXbLXoxo2FeqiON5g==","signatures":[{"sig":"MEUCIQD4MWAVXI8GHqhRkBbaXS5wIvMLb1iq3iW2EphtV8R+mAIgZC9F+IBVgbH7kJPrtCdgxeUj0asQcpkF/58ez66ifKk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14892799},"main":"main.js","engines":{"node":">=22"},"gitHead":"d8730d0a84fe8df24b9d609799789a05ac9a32e5","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.146_1785185128502_0.21273165850466236","host":"s3://npm-registry-packages-npm-production"}},"0.8.147":{"name":"iobroker.nexowatt-ui","version":"0.8.147","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.147","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e1e4297b871a177a642378e8bd9c15f7f8fbcecc","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.147.tgz","fileCount":205,"integrity":"sha512-zXt8M2WV5LrhQxh6KWHWodeA7reur97nerBYaReSHChc3CZjv9OYKG029RVssfBtkiB9zvcyGMo69PNJeAvRBQ==","signatures":[{"sig":"MEUCIDdGRiWZT5PIS6IH6xOT7VRPpZPTFI9jUyM6UfCjQ6/RAiEAlB1CaRnQqDb1g7jNms8wZ+6UgcdsfDzYUoPs43G9mGw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14940450},"main":"main.js","engines":{"node":">=22"},"gitHead":"d92dc6ddecbb88666b1520d6cc52378e3e0439e2","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-fenecon-hybrid-controller && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-fenecon-hybrid-controller":"node scripts/verify-storage-fenecon-hybrid-controller.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.147_1785226007633_0.43444463219273977","host":"s3://npm-registry-packages-npm-production"}},"0.8.148":{"name":"iobroker.nexowatt-ui","version":"0.8.148","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.148","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f60442ad6f5fa8431905a14416a7a57b06e42daf","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.148.tgz","fileCount":210,"integrity":"sha512-1Ztva7z5nczIIlvOkjb/TvMGjLtAaTeWx0dxyPopJ0vNCRh3i3XTrXlo3PO0T+gn+Ux6ethq+oDliEqeoUENPw==","signatures":[{"sig":"MEYCIQCM9NNad33j6u9cCZYLCmn9ooqFko+iNJOFOz1Pj5oeDgIhANxDnHzgfNAYI4iAVZL7bwh25amKyW7UZlP8V9rBCrET","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15018653},"main":"main.js","engines":{"node":">=22"},"gitHead":"d77fae16dec165003777efb1a7305030929856c0","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.148_1785578598936_0.7994282476283976","host":"s3://npm-registry-packages-npm-production"}},"0.8.149":{"name":"iobroker.nexowatt-ui","version":"0.8.149","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.149","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"ce2300440efc07016f4f8146c4f3822c69b65e37","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.149.tgz","fileCount":210,"integrity":"sha512-LStyrR3NlMRzllU5Q/GmYrdwOh14Qf8hChvq2voKy74s+DVHKd2fENH49WMcB/cfwa++R8sp5D5tqSsD5/PA7w==","signatures":[{"sig":"MEQCIHiXTEZlOlTsSr76ArXsW8GmOmHZof1aTkIJQ7rgqwW2AiBi1HGCdDFV1XTmz2vdjHrAIXzf9OzmR2kvIV7cZaXmfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15019345},"main":"main.js","engines":{"node":">=22"},"gitHead":"3f1f490fe9cdc7dc8dacd4bcf32c773234095968","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.149_1785598560878_0.9461932209397801","host":"s3://npm-registry-packages-npm-production"}},"0.8.150":{"name":"iobroker.nexowatt-ui","version":"0.8.150","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.150","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"7061e8b1010a325bdfba739ff7e491c1a10231af","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.150.tgz","fileCount":212,"integrity":"sha512-MNSsn5s2qL2AFIgPDDSbdqTDXqOqB3XGhCI6GoJjkTmT3sgVK13iugHsIUSCe4eOCA3dbb8vSmbxMs0EdtDQIA==","signatures":[{"sig":"MEUCIB7ILmNjds8BoDm3X72zbhzL2UI4z5fM0sW1fMC1bcvUAiEAghVXLc5KxITWI4XTsaHdHqPDBqY2scCDNkfqZCqdm1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15106097},"main":"main.js","engines":{"node":">=22"},"gitHead":"3f1f490fe9cdc7dc8dacd4bcf32c773234095968","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:device-auto-mapping && npm run test:tariff-provider-runtime && npm run test:tariff-provider-appcenter && npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.150_1785618732895_0.19841185998956834","host":"s3://npm-registry-packages-npm-production"}},"0.8.151":{"name":"iobroker.nexowatt-ui","version":"0.8.151","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.151","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"006ee238985b6b48bdf3013af1bb3661b7aa86ba","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.151.tgz","fileCount":213,"integrity":"sha512-7RvG63XarHnjcuZIr5m+iS/95XjqTWo7asErobwbkeW7IJLa8PYqFD5kNLLTCMJG9j9gy/3hAmoTl7FE9myiEQ==","signatures":[{"sig":"MEQCIHLPqr/yUtSREWvdnfUpwEsZxoeG73PvjRT2UeH7oDGzAiAuZ6XuvXWECRj0s0miyYdVmWQJbFk5p+kAv3lzUXrNCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15193654},"main":"main.js","engines":{"node":">=22"},"gitHead":"7ecaf0119513de2a91aba22049792fa1c9608c48","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:fenecon-hybrid-controller && npm run test:appcenter-auth-modal-lock && npm run test:smarthome-customer-dp-mapping && npm run test:tariff-provider-responsive-layout && npm run test:device-auto-mapping && npm run test:tariff-provider-runtime && npm run test:tariff-provider-appcenter && npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.151_1785662940928_0.3980539915716017","host":"s3://npm-registry-packages-npm-production"}},"0.8.153":{"name":"iobroker.nexowatt-ui","version":"0.8.153","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.153","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f643b3492ffbf084d18d1861e2e475ef9d2c2a92","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.153.tgz","fileCount":214,"integrity":"sha512-T6uS+ZnyEGemJm4IT8/DGD2g/VRzkTYPuyKI6zzIT0+gyNB/cppEF6M+RttvGGT4Wob5dAQ3Mhe4SSnBsVGhRw==","signatures":[{"sig":"MEUCIQCsm1fY2rWz+cNQ/r+Opzwc448NiYDw658a7S+R2Z1QMgIgMDmJrXI2AlCKDfTg+F9vkcGUuMNnyJApe5e7kBquGg8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15236115},"main":"main.js","engines":{"node":">=22"},"gitHead":"b394e531792505937b0330c0f3dbe1c0cbe4806f","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:fenecon-hybrid-controller && npm run test:appcenter-auth-modal-lock && npm run test:smarthome-customer-dp-mapping && npm run test:tariff-provider-responsive-layout && npm run test:device-auto-mapping && npm run test:tariff-provider-runtime && npm run test:tariff-provider-appcenter && npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:evcs-energy-unit-conversion && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.153_1785779325228_0.8264101685126308","host":"s3://npm-registry-packages-npm-production"}},"0.8.155":{"name":"iobroker.nexowatt-ui","version":"0.8.155","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.155","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"7826d1a7af7e5ce2930b95ab0cce4b4a292e4f24","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.155.tgz","fileCount":214,"integrity":"sha512-PoVor1FW4ktwA/sC7jLUDNs/+MFOH743Ol/Dq6cUk7R+QVRvM+JQLqLoZzxAlY+qvqJdNJ8U8DbESiNAtBYVGw==","signatures":[{"sig":"MEUCIB9j6UtCeFjwmRmYQWUz63LZB07nUZybPpUXk49+XrTVAiEA5OkIaX2lVwqLrNyP6DFi76CeUiZFJDMVsOgccB+2JXE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15301371},"main":"main.js","engines":{"node":">=22"},"gitHead":"dbd3abae42d755b1256527e9fc2c096082fd5f8c","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:fenecon-hybrid-controller && npm run test:appcenter-auth-modal-lock && npm run test:smarthome-customer-dp-mapping && npm run test:tariff-provider-responsive-layout && npm run test:device-auto-mapping && npm run test:tariff-provider-runtime && npm run test:tariff-provider-appcenter && npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:evcs-energy-unit-conversion && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.155_1785951927789_0.711395617278233","host":"s3://npm-registry-packages-npm-production"}},"0.8.156":{"name":"iobroker.nexowatt-ui","version":"0.8.156","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.156","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"18afef73f7562cfa99cd7b7b0fb9e488117469f6","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.156.tgz","fileCount":215,"integrity":"sha512-4WGU2JyINV9IU44Wkz5ZUk8EGw5YTIrkNYSA97TVlH2SNXL95Fojruwk80mFIatAcPNoe+njh41K1VPQ3b2YgQ==","signatures":[{"sig":"MEUCIDiCnbH/wRbIXZq8KDf0DU3/tMftAD6aScuHo/rRyqGWAiEAj+AysILkJ0eYOu3RERz7QvZhgMblfICqJQuFDKRrNZk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15349822},"main":"main.js","engines":{"node":">=22"},"gitHead":"77f28ca131b0acb153928ea184c87bbda29193f4","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:fenecon-hybrid-controller && npm run test:appcenter-auth-modal-lock && npm run test:smarthome-customer-dp-mapping && npm run test:tariff-provider-responsive-layout && npm run test:device-auto-mapping && npm run test:tariff-provider-runtime && npm run test:tariff-provider-appcenter && npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:evcs-energy-unit-conversion && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:para14a-eebus-direct-api && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.156_1786042599717_0.3289178781324571","host":"s3://npm-registry-packages-npm-production"}},"0.8.157":{"name":"iobroker.nexowatt-ui","version":"0.8.157","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.157","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"ff41c1173bfda1f1aabbcc063b218e512500a1d4","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.157.tgz","fileCount":215,"integrity":"sha512-ePjocRdNOsTgBNuUyNLAEQidFrRRA4yqNTJw6lPFy0X1fAmKBCDyA2Jd1wPK28jFmlCoNJa63pu1IhtXV9H6vQ==","signatures":[{"sig":"MEQCIDLgNIJXtI3ANkgNbeGe9TeidLIrt1CyzUsZ44GZYtiQAiB9VSrmveHjMc9CHRGKuPDpy31mzzb6YQp1Su8VJea1bw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15361894},"main":"main.js","engines":{"node":">=22"},"gitHead":"f0eddd6f6ff5a94a1ada79b6801a5cf684fe1908","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:fenecon-hybrid-controller && npm run test:appcenter-auth-modal-lock && npm run test:smarthome-customer-dp-mapping && npm run test:tariff-provider-responsive-layout && npm run test:device-auto-mapping && npm run test:tariff-provider-runtime && npm run test:tariff-provider-appcenter && npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:evcs-energy-unit-conversion && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:evcs-input-refresh-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:para14a-eebus-direct-api && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.157_1786074298782_0.7951700259982577","host":"s3://npm-registry-packages-npm-production"}},"0.8.158":{"name":"iobroker.nexowatt-ui","version":"0.8.158","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.158","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"530858cf08378f5b9f8a3e2675b9be475ee6a9b4","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.158.tgz","fileCount":215,"integrity":"sha512-cyPvkVK2/xXs2zCK8FqUpz2mVRxumOzMDnUvzpyQTsxLsrHYwMA1A8AIjDdoGxKEyFWCOZf1h91HNEoVQfIH8A==","signatures":[{"sig":"MEUCIQC5fWwLC45L+m0fi6n24VTiwldO+TbZC2wx+1419NutfwIgC+LFJVxOHXdgPTEEwZV0/uk3yvKxWefIvo7HXnE9530=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15367862},"main":"main.js","engines":{"node":">=22"},"gitHead":"d113d9cb2599f71a3164695b733dc65919b2b839","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:fenecon-hybrid-controller && npm run test:appcenter-auth-modal-lock && npm run test:smarthome-customer-dp-mapping && npm run test:tariff-provider-responsive-layout && npm run test:device-auto-mapping && npm run test:tariff-provider-runtime && npm run test:tariff-provider-appcenter && npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:evcs-energy-unit-conversion && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:evcs-input-refresh-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:para14a-eebus-direct-api && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.158_1786114327244_0.2587329016809703","host":"s3://npm-registry-packages-npm-production"}},"0.8.159":{"name":"iobroker.nexowatt-ui","version":"0.8.159","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.159","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"3c7b6ece5e0a0c7951b5b2ceb19d0c88829106f6","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.159.tgz","fileCount":215,"integrity":"sha512-i8G3nEaZyt5RBXpvCR6ZwJ4SY149HUcKj2QdC4Rxa4h4krkFcRALEqiMsZhHPU3mejDD72LG5gQ8hqq/D2QGAA==","signatures":[{"sig":"MEQCIB7cUXu4TbmQi4nx/n3sY9PsF3c+gbQQ/SE5DtskHq+8AiAj1tdbuSQkYkqw8xd0yWGV9J+NAkhYx4Q567IrpN6T5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15371582},"main":"main.js","engines":{"node":">=22"},"gitHead":"7e0ad91aa3c09e414ac4a99efa0b385f6205c6e6","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:fenecon-hybrid-controller && npm run test:appcenter-auth-modal-lock && npm run test:smarthome-customer-dp-mapping && npm run test:tariff-provider-responsive-layout && npm run test:device-auto-mapping && npm run test:tariff-provider-runtime && npm run test:tariff-provider-appcenter && npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:evcs-energy-unit-conversion && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:evcs-input-refresh-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:para14a-eebus-direct-api && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.159_1786171116067_0.9039428485944336","host":"s3://npm-registry-packages-npm-production"}},"0.8.160":{"name":"iobroker.nexowatt-ui","version":"0.8.160","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.160","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"c64d2ebd61aecddd75e6b8a1462e3f578fed5ba3","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.160.tgz","fileCount":215,"integrity":"sha512-uK7zVxA1SmpWk79gC9T4AIC7yOCGzlu8AtDXfQoPujrmBJmLBrHHT4B+R/RdFsEio+VP+jYDrCByNgUEG4Oj/w==","signatures":[{"sig":"MEUCIQDNvOywHpmPcSpOssgJrvnKb94bCCfHej3jPUpNkB4f5AIgTPPWflCY2fX1ryCQ+7/LTe3lG6VSvyA8/ZFbHIv8ijU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15381551},"main":"main.js","engines":{"node":">=22"},"gitHead":"fba6289fbc159f4f836e0f38d1021f2e940e722e","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:fenecon-hybrid-controller && npm run test:appcenter-auth-modal-lock && npm run test:smarthome-customer-dp-mapping && npm run test:tariff-provider-responsive-layout && npm run test:device-auto-mapping && npm run test:tariff-provider-runtime && npm run test:tariff-provider-appcenter && npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:evcs-energy-unit-conversion && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:evcs-input-refresh-hardening && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:para14a-eebus-direct-api && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.160_1786189313578_0.16620141424072643","host":"s3://npm-registry-packages-npm-production"}},"0.8.161":{"name":"iobroker.nexowatt-ui","version":"0.8.161","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.161","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f5ec73637643032c2eaff8a187e7e85d4cd042f1","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.161.tgz","fileCount":215,"integrity":"sha512-wU1zPAEkYNAqebhD4miPwxnvDr8WLgm+B5gLOR2KhpgBqrT786Pgz3mrYGHf9ucGo+BzSZMa+j4jK3/Tu8PcKQ==","signatures":[{"sig":"MEYCIQD8EneYeAnKdhkaZAbXE+fwE1t6u5AV50gV3c105A6+yQIhAJRyJ1JuFlUMA0dtd/odkDWXCsiaVY80pldHtSiMYg7E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15393596},"main":"main.js","engines":{"node":">=22"},"gitHead":"57f816c961c6c05e69f87adf0911cf6b2032d13f","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:fenecon-hybrid-controller && npm run test:appcenter-auth-modal-lock && npm run test:smarthome-customer-dp-mapping && npm run test:tariff-provider-responsive-layout && npm run test:device-auto-mapping && npm run test:tariff-provider-runtime && npm run test:tariff-provider-appcenter && npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:evcs-energy-unit-conversion && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:evcs-input-refresh-hardening && npm run test:evcs-control-alias-mapping && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:para14a-eebus-direct-api && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:charging-infrastructure-budget && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.161_1786192817965_0.7218497764366503","host":"s3://npm-registry-packages-npm-production"}},"0.8.162":{"name":"iobroker.nexowatt-ui","version":"0.8.162","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.162","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"c1aa910c440bdb60ac386c2c992f8e3f1c6305e0","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.162.tgz","fileCount":220,"integrity":"sha512-U87w0fKlTjXiUHSziShvadxS1Dz8WKO4AVQ1G9/mBotd1AC4DWY0hUofMKnIBVGBYTYakvM6ZTBiJuCyeMV8+Q==","signatures":[{"sig":"MEUCIQDJNJpoDd4HTW+aDem3fRo8BhgMc6jdWl7FS8paFtHN2QIgDqOUlW5zeFcOGwQx1yNqY3d/n4obLgmfvGkFp9g4tqM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16888934},"main":"main.js","engines":{"node":">=22"},"gitHead":"57f816c961c6c05e69f87adf0911cf6b2032d13f","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:fenecon-hybrid-controller && npm run test:datapoint-strict-numbers && npm run test:fenecon-authority-runtime && npm run test:appcenter-auth-modal-lock && npm run test:smarthome-customer-dp-mapping && npm run test:tariff-provider-responsive-layout && npm run test:device-auto-mapping && npm run test:tariff-provider-runtime && npm run test:tariff-provider-appcenter && npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:evcs-energy-unit-conversion && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:evcs-input-refresh-hardening && npm run test:evcs-control-alias-mapping && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:para14a-eebus-direct-api && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-control-functional-safety && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:charging-infrastructure-budget && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && npm run test:npm-version-free-guard && npm run test:npm-version-free-runtime && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.162_1786210742708_0.02177838899791351","host":"s3://npm-registry-packages-npm-production"}},"0.8.163":{"name":"iobroker.nexowatt-ui","version":"0.8.163","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.163","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b748e8756fdf663f4f6830eaa51254ac8bef7c36","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.163.tgz","fileCount":222,"integrity":"sha512-hdGcSIP74UlQaVLzndk8qRYFRYQmpLLhdyTgGIyE6HSXnbK9u1G69BQt1xWXc393HxZsTWiwsgyzD3PU3zZhHA==","signatures":[{"sig":"MEUCIQDu4JeDfGcWP6+fVsW2mrHpfVViJCXxaiAZDEDhUJbuaQIgGGlDOz+KLGJrF9ga+t1O0OuvUbFkcqiuBztlnlymDaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17033825},"main":"main.js","engines":{"node":">=22"},"gitHead":"4ec35c7d51fb2cc0f40c31ade0749c129ce6a46a","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"npm run test:fenecon-hybrid-controller && npm run test:datapoint-strict-numbers && npm run test:safety-envelope-final-write && npm run test:safety-active-load-stop && npm run test:safety-module-deactivate && npm run test:fenecon-authority-runtime && npm run test:appcenter-auth-modal-lock && npm run test:smarthome-customer-dp-mapping && npm run test:tariff-provider-responsive-layout && npm run test:device-auto-mapping && npm run test:tariff-provider-runtime && npm run test:tariff-provider-appcenter && npm run test:system-language-i18n && npm run test:system-language-i18n-runtime && npm run test:evcs-station-permission && npm run test:evcs-energy-unit-conversion && npm run test:accepted-power-effects && npm run test:evcs-status-hardening && npm run test:evcs-input-refresh-hardening && npm run test:evcs-control-alias-mapping && npm run test:appcenter-writable-dp-gates && npm run test:appcenter-writable-dp-runtime-contract && npm run test:storage-fenecon-day-no-write && npm run test:storage-appcenter-output-modes && npm run test:storage-command-family-readback && npm run test:storage-anti-export-ramp && npm run test:storage-license-power-profiles && npm run test:storage-nvp-fast-servo && npm run test:storage-nvp-topology-hysteresis && npm run test:storage-nvp-fast-controller && npm run test:storage-actual-power-nvp-balance && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-storage-policy-mode-scope && npm run test:storage-async-feedback-all-profiles && npm run test:storage-topology-authority && npm run test:storage-farm-one-second-cadence && npm run test:storage-farm-dispatch-recovery && npm run test:storage-appcenter-override-precedence && npm run test:storage-appcenter-dp-persistence && npm run test:storage-manual-dp-routing && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:module-lifecycle-para14a && npm run test:core-budget-publication-object-contract && npm run test:evcs-no-vehicle-no-reservation && npm run test:storage-farm-auto-dispatch && npm run test:core-limits-typed-runtime-phase3 && npm run test:core-limits-typed-runtime-phase2 && npm run test:core-limits-typed-runtime-phase1 && npm run test:para14a-central-constraint && npm run test:para14a-eebus-direct-api && npm run test:multiuse-storage-policy-only && npm run test:storage-policy-core-cleanup && npm run test:storage-control-app-separation && npm run test:storage-control-functional-safety && npm run test:storage-policy-baseline && npm run test:storage-policy-runtime && npm run test:storage-multiuse-policy-isolation && npm run test:peak-shaving-readback-contract && npm run test:tariff-freshness-safety && npm run test:tariff-storage-status-truth && npm run test:nvp-coordinator-storage-pv && npm run test:nvp-coordinator-diagnostics-ui && npm run test:storage-zero-write-firewall-v2 && npm run test:pv-source-dedup-cap && npm run test:multiuse-central-budget-c3 && npm run check:ts-nocheck-budget && npm run test:field-security-hardening && npm run test:stage-a-diagnostics && npm run test:actuator-shadow-arbiter && npm run test:actuator-authority-arbiter && npm run test:actuator-safety-arbiter && npm run test:actuator-blocked-write-propagation && npm run test:actuator-c3-threshold-relay && npm run test:actuator-c3-thermal-heating && npm run test:actuator-c3-nexologic && npm run test:actuator-c3-prime-movers && npm run test:live-energy-flow-5s-cadence && npm run test:energy-flow-measurement-authority && npm run test:pv-surplus-dynamic-storage-remainder && npm run test:measurement-freshness-stage-b && node scripts/ensure-publish-dev-deps.js && npm run git:conflicts && npm run check:tsconfig-modern && npm run check:ts-source-integrity && npm run check:ts-canonical && node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors && npm run check:ts-runtime-executables && node scripts/verify-ts-script-mirrors.js && node scripts/verify-ts-frontend-mirrors.js && node scripts/verify-ts-backend-mirrors.js && node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-main-helpers.js && node scripts/verify-ts-feature-visibility-preview-runtime.js && node scripts/verify-ts-feature-visibility-effective-runtime.js && node scripts/verify-ts-energy-flow-mirrors.js && node scripts/verify-ts-energy-flow-shadow-runtime.js && node scripts/verify-ts-ems-mirrors.js && node scripts/verify-ts-ems-shadow-runtime.js && node scripts/verify-ts-customer-feature-visibility.js && node scripts/verify-ts-feature-visibility-shadow.js && node scripts/verify-ts-shadow-bridges.js && node scripts/verify-ts-feature-visibility-shadow-hook.js && npm run test:ems-shadow-runtime && node scripts/verify-ts-shadow-diagnostics-ui.js && node scripts/verify-ts-shadow-readiness.js && node scripts/verify-ts-energy-flow-switch-mode.js && node scripts/verify-ts-energy-flow-mode-ui.js && node scripts/verify-ts-energy-flow-candidate-mode.js && node scripts/verify-ts-energy-flow-safe-candidate-mode.js && node scripts/verify-shadow-diagnostics-usability.js && node scripts/verify-ts-shadow-diagnostics-ui-stability.js && node scripts/verify-ts-real-plant-shadow-evaluation.js && node scripts/verify-ts-shadow-real-plant-evaluation.js && node scripts/verify-ts-energy-flow-plant-gate.js && node scripts/verify-ts-energy-flow-active-test.js && node scripts/verify-ts-core-limits-runtime-typing.js && node scripts/verify-ts-heating-rod-runtime-typing.js && node scripts/verify-ts-ai-advisor-runtime-typing.js && node scripts/verify-ts-history-runtime-typing.js && node scripts/verify-ts-smarthome-runtime-typing.js && node scripts/verify-ts-smarthome-config-runtime-typing.js && node scripts/verify-ts-ems-apps-runtime-typing.js && node scripts/verify-ts-app-runtime-typing.js && node scripts/verify-ts-main-runtime-typing.js && node scripts/verify-ts-main-runtime-helpers.js && node scripts/verify-ts-adapter-helpers.js && node scripts/verify-ts-main-helpers-runtime.js && node scripts/verify-ts-api-state-set-shadow.js && node scripts/verify-ts-main-api-shadow.js && node scripts/verify-ts-energy-flow-fallback-reduction.js && node scripts/verify-ts-energy-flow-runtime-plant-reduction.js && node scripts/verify-ts-energy-flow-fixed-source-prep.js && node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js && node scripts/verify-ts-core-limits-productive.js && node scripts/verify-ts-core-limits-reservations.js && node scripts/verify-ts-core-limits-reservations-productive.js && node scripts/verify-ts-core-limits-rest-gates.js && node scripts/verify-ts-core-limits-rest-gates-productive.js && node scripts/verify-ts-heating-rod-productive.js && node scripts/verify-ts-heating-rod-runtime-evaluation.js && node scripts/verify-ts-heating-rod-normal-path.js && node scripts/verify-ts-heating-rod-normal-takeover.js && node scripts/verify-ts-heating-rod-js-fallback-hard-only.js && node scripts/verify-ts-heating-rod-hard-fallback-only.js && node scripts/verify-ts-heating-rod-emergency-fallback.js && node scripts/verify-ts-heating-rod-legacy-cleanup.js && node scripts/verify-ts-heating-rod-legacy-removal-plan.js && node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js && node scripts/verify-ts-ai-advisor-payload-productive.js && node scripts/verify-ts-live-dashboard-format-productive.js && node scripts/verify-ts-heating-rod-debug-bridge.js && node scripts/verify-ts-heating-rod-legacy-pruned-debug.js && node scripts/verify-ts-heating-rod-legacy-pruned.js && node scripts/verify-ts-heating-rod-legacy-removal-candidate.js && node scripts/verify-ts-heating-rod-legacy-final-cleanup.js && node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js && node scripts/verify-ts-charging-management-shadow.js && node scripts/verify-ts-charging-management-control-shadow.js && node scripts/verify-ts-charging-control-productive-prep.js && node scripts/verify-ts-charging-budget-productive.js && node scripts/verify-ts-charging-control-productive.js && node scripts/verify-ts-charging-allocation-shadow.js && node scripts/verify-ts-charging-allocation-productive-prep.js && node scripts/verify-ts-charging-allocation-productive.js && node scripts/verify-ts-charging-write-plan-shadow.js && node scripts/verify-ts-charging-write-plan-productive.js && node scripts/verify-ts-charging-js-executor-fallback.js && node scripts/verify-ts-charging-safety-handover.js && node scripts/verify-ts-charging-normal-source-lockdown.js && node scripts/verify-ts-charging-final-handover.js && npm run test:charging-phase-selection && npm run test:charging-phase-ui && npm run test:charging-storage-assist-policy && npm run test:charging-minpv-base-reaction && npm run test:charging-infrastructure-budget && npm run test:pv-unused-evcs-release-to-storage && node scripts/verify-ts-runtime-js-cleanup.js && npm run test:brand-header-cleanup && npm run test:app-center-install-colors && npm run test:evcs-global-storage-station-pages && npm run test:dc-station-display && npm run test:burger-menu-guard && npm run test:energy-wallet-diagnostics && npm run test:energy-ledger-foundation && npm run test:energy-origin-ledger-foundation && npm run test:energy-origin-ledger-runtime && npm run test:license-editions && npm run test:npm-version-free-guard && npm run test:npm-version-free-runtime && node scripts/verify-publish.js && npm run test:main-api-productive && npm run test:shadow-json-ui && npm run test:energy-flow-live-test-states && npm run test:energy-flow-ts-productive && npm run test:energy-flow-productive-active && npm run test:energy-flow-productive-default && npm run test:energy-ledger-operator","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run git:conflicts && node scripts/verify-publish.js","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.163_1786220178181_0.6812055001700854","host":"s3://npm-registry-packages-npm-production"}},"0.8.164":{"name":"iobroker.nexowatt-ui","version":"0.8.164","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.164","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f5e2bae01dcd0d6ea4d2e269d88c9caa7bc72980","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.164.tgz","fileCount":214,"integrity":"sha512-rGcseCeQr2iZaFsQaFmkY/clDTp8md0lTLg8QPEWqonnqCnRDYj6R7vYWKV9+F0IHSS5A9ZGB7048FQvowYWdw==","signatures":[{"sig":"MEUCIBZbcUelvtubxkNTWpB2DuzABAGj2p4n/sEjZUFqzY8+AiEAhQYKbeRkFrdAEA5hPpzDACxzEGX3p3/Zf5ENmrVs2tk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15378369},"main":"main.js","engines":{"node":">=22"},"gitHead":"8d25a1d5ef98f61e06e70b1d94673671dc3ba4f0","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.164_1786269192439_0.6582764410157009","host":"s3://npm-registry-packages-npm-production"}},"0.8.165":{"name":"iobroker.nexowatt-ui","version":"0.8.165","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.165","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"985055bb29ec04fdf3f2346311b1f05628ac4a9b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.165.tgz","fileCount":215,"integrity":"sha512-6l2mVGWE/wb6dlCQizBaJdUdVzvFG0vHVFR/AFy1X2OmhcNSGCttNQsDeGaS0lfXo2SK4hGg+rn1BEG8qd4gDA==","signatures":[{"sig":"MEYCIQC9eNABrzzs4d3TddXYpraIr6yFCpygvi0iwbrhE0ARmwIhALTDdee6MLk1WXs62QoxOaMxwZbrPZtKPk8n6IW4sOLH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15390557},"main":"main.js","engines":{"node":">=22"},"gitHead":"cc870bd78e64af69aa7408856bd3a969260cc217","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.165_1786274183477_0.06107682501997336","host":"s3://npm-registry-packages-npm-production"}},"0.8.166":{"name":"iobroker.nexowatt-ui","version":"0.8.166","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.166","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e208562a63fc9b9b8b35a580d24cb349521d99f1","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.166.tgz","fileCount":217,"integrity":"sha512-Q9HV0TrwNurDUHK/5ij5bJdOnxKuSpY1QzAHMfpzyFhSA/mcA1AAnzVCcl4hjQ1o+YW3DmYiY4uDWV3jR3jRaA==","signatures":[{"sig":"MEUCIAaRPUsFMto9M/9YqkG4D6XQfgLcnNqMU4hVbvTtoEOGAiEA3OUjvDUR8jeIPZYQlY+zT949Xj+CK7D87eRIz9tEYMY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15445083},"main":"main.js","engines":{"node":">=22"},"gitHead":"cc870bd78e64af69aa7408856bd3a969260cc217","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.166_1786286978131_0.5413111711510203","host":"s3://npm-registry-packages-npm-production"}},"0.8.167":{"name":"iobroker.nexowatt-ui","version":"0.8.167","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.167","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"55422130e8ae28fe2ae34e6a161a95db965f6d65","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.167.tgz","fileCount":219,"integrity":"sha512-NEeeLlgQGT/irMmRkzhmBz53JUd1qDpRl8KTbr3Hw726HhQkqlkJAG6N4Wq51zfwX6qlwLqJGqxJdlnjYbty6Q==","signatures":[{"sig":"MEYCIQDS0to7EjPXq4hQsQnOrZlmPAR5FycVqgMxWr7+Dild4QIhAM1Ki1+hVqUjbNKX7jhr3c0xeorj3c141SFt59AwytKC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15623326},"main":"main.js","engines":{"node":">=22"},"gitHead":"1448216e6e1885f614b8b5a5533ec77ecd5a7b75","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"Responsive NexoWatt EMS visualization adapter.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.167_1786305435465_0.41613872336508373","host":"s3://npm-registry-packages-npm-production"}},"0.8.168":{"name":"iobroker.nexowatt-ui","version":"0.8.168","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.168","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d1fe54134dd4f3979a90df2233bda93f17fea71d","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.168.tgz","fileCount":220,"integrity":"sha512-Iqb/18CnntMGr6r52xDrgbNamZKpeQGUUpKjca3JGXBzq4U5MDU4uQliZMx2l8TblnAp6EauXOY5CRw5sbOBmg==","signatures":[{"sig":"MEUCIQCdnPcsZUrBRjTB2CqjY4xKiU4TBrE33ZKkAKGryKsMmgIgG2yN+zixC+RdHev4hRXWeBiScsOTwzCBOLjq4doPcD0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15633444},"main":"main.js","engines":{"node":">=22"},"gitHead":"1448216e6e1885f614b8b5a5533ec77ecd5a7b75","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.168_1786310672814_0.16012949928815967","host":"s3://npm-registry-packages-npm-production"}},"0.8.169":{"name":"iobroker.nexowatt-ui","version":"0.8.169","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.169","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e28d4147d6fdb603e62e118be04fc4b6345a5fe3","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.169.tgz","fileCount":223,"integrity":"sha512-Acr/U4BLuegk605vsdX/vUnFjasfyQ1B1moUehiMDUp54qOmn9zZkuh68woL5OyFmtFMbvaZvxrv/KphQ0EyQw==","signatures":[{"sig":"MEUCIFjqKkigYoUbc8TczK08D3bfL+48k8jKybZmdYoYJMzYAiEA46BS17ev2Qu8RQ36a7S6Rb3lAeKem89JnLrgF2Mu1Fw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15668329},"main":"main.js","engines":{"node":">=22"},"gitHead":"57fce51d4570d5c99a6afd68794063580b3222a2","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.169_1786340249396_0.4333693704820325","host":"s3://npm-registry-packages-npm-production"}},"0.8.170":{"name":"iobroker.nexowatt-ui","version":"0.8.170","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.170","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"4008a02cc566b2a67b469d4a9743bce7a87da2b6","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.170.tgz","fileCount":224,"integrity":"sha512-HCaRURBUeXgoKWjFnrwt4j/IP4jyAPEHeNHGggUcH9v+jSl6JetbFF8FjAWBF0VVW4CyLW2AXjBdcGkm/LmClQ==","signatures":[{"sig":"MEYCIQCsRKGapcUvO2cuwO+GJAnzheNClJ4S27aCJiWrREBOEQIhAO3cccINmMPTSZE8YuwnClarJ4VqZlae0xVjkzSzWN8G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15735540},"main":"main.js","engines":{"node":">=22"},"gitHead":"cbe5f5e86135d3961bdd628c0adc2d9078d5a79c","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.170_1786348651695_0.325677040876875","host":"s3://npm-registry-packages-npm-production"}},"0.8.171":{"name":"iobroker.nexowatt-ui","version":"0.8.171","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.171","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"7827ac26d85c22ee95321aeef558bbf2ae221ee0","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.171.tgz","fileCount":225,"integrity":"sha512-8t9mN6VLo4nZ46VrhgSB3/ujuiuCgs8FPv8YTc8tHLiVF/2hvih2h8IDs2Xa2J2BUKM9tiybbU3VU9nZ5SPZXw==","signatures":[{"sig":"MEQCIBdSRBGROlzYzfYRR+n+z1zmfRMx5ymBOlnxQ/K9blL6AiBAhjvxY0r+aCBHabxbczEdB1V928DRKBGz0UZHHiAA6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15747967},"main":"main.js","engines":{"node":">=22"},"gitHead":"cbe5f5e86135d3961bdd628c0adc2d9078d5a79c","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.171_1786353065787_0.6334161209653604","host":"s3://npm-registry-packages-npm-production"}},"0.8.172":{"name":"iobroker.nexowatt-ui","version":"0.8.172","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.172","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"ef51231109b8d9722dad23007349cf91438f8d50","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.172.tgz","fileCount":216,"integrity":"sha512-EeQFErqGtm8encgtY5C2VTMUIIPoZUvB4xPBSiKgRnyGnadUlAD8gGus5m95fUaPYeCQJQ0y5DID/C9c4MDfig==","signatures":[{"sig":"MEQCIB8hzZ/xaoI5S8A2l8CSMiRqq+2GQDovs/N/1hc8bd9xAiB+vhX0QQs3p0xXlswGlIaA99sN1cVyGVc6KVp7xx/eMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16110944},"main":"main.js","engines":{"node":">=22"},"gitHead":"0dabaa3aa43cd05ed989fb82ddbe4787e9117495","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:rc48-para14a-evcs":"node scripts/verify-rc48-para14a-evcs-contract.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.172_1786368190684_0.540445365253232","host":"s3://npm-registry-packages-npm-production"}},"0.8.173":{"name":"iobroker.nexowatt-ui","version":"0.8.173","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.173","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"70488aa292d75b364efe783662bb4e778daee40e","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.173.tgz","fileCount":226,"integrity":"sha512-reaAD2YZOJ5zosIVduw1DkLfIEtR/4yEGBlFQlS2JBQT9Pvd/zDROPoYQGdj3jfPrEP+agsORXboDA3chUY4lQ==","signatures":[{"sig":"MEYCIQDWKuIgFYemHe4iQCbxkGzRvSIHCyzSaXJms32aiCNjkQIhAJNhdJAZkTeJjz7uJdqo8nIz7GW4vG74i5XhIdmDvs0r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15756334},"main":"main.js","engines":{"node":">=22"},"gitHead":"0dabaa3aa43cd05ed989fb82ddbe4787e9117495","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.173_1786379699464_0.478286546129312","host":"s3://npm-registry-packages-npm-production"}},"0.8.174":{"name":"iobroker.nexowatt-ui","version":"0.8.174","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.174","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f0fbeac0e31c0ef4bd18713a1738cff058b001ac","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.174.tgz","fileCount":245,"integrity":"sha512-FaIDOFiL43DMYMAuomqJVdN3L1x5YCXhVNbnOZsa/htNcdSVjobPstrtC9sYsRFUzU4MFAhBSlXDDfJXra1w9w==","signatures":[{"sig":"MEUCIQD6F+2QXsahNXHCUd6opOWh0g+y7/4MRz2MJ6jUCWbJkQIgdQFfU4KlmR1tb2uoWuoMTyu3Lx+pcIbsyDfqtfRIQ5U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15931335},"main":"main.js","engines":{"node":">=22"},"gitHead":"169b018d51b55c5193aae1977d5b7c2560987f3a","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.174_1786425203993_0.5207761723847892","host":"s3://npm-registry-packages-npm-production"}},"0.8.175":{"name":"iobroker.nexowatt-ui","version":"0.8.175","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.175","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e691de0a7729c2b993804c20329d233d842282a1","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.175.tgz","fileCount":246,"integrity":"sha512-+A54mIELMHHX156w6+ZqtNLCpD5bClGs23o17oEJYfllI8JHOP/KGh2xCLLOqFoBcaWCtDSrMBZnQ5QfQ0AE4A==","signatures":[{"sig":"MEQCIHSTqWQ+XucNVsNhkudLiCi4UkW2fgI2f6e1r7wpAbbmAiBZ4lqopXMkee0K8WjrcyJvXvNMcrAFRvwcs0OM4XYDPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15955238},"main":"main.js","engines":{"node":">=22"},"gitHead":"169b018d51b55c5193aae1977d5b7c2560987f3a","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.175_1786459423346_0.7966273748461592","host":"s3://npm-registry-packages-npm-production"}},"0.8.176":{"name":"iobroker.nexowatt-ui","version":"0.8.176","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.176","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"6ddbc322c0f202dee14763adc4de1437ff6c4e56","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.176.tgz","fileCount":250,"integrity":"sha512-6z4FS9oJdziFwpSyK73x+4sMtMWAwjBqagCQwAOFAWr3ZfnypITV+Py5uQmvbM1YcM5XUIQeE+GeCJF2tFuiyA==","signatures":[{"sig":"MEUCIGoyIvLmivh0zBuygFUtKVv9l1YcczwP08LitMRGxLvrAiEAh9QhQeS7iDgLLv1R/IpYozPJdUupTNkrfHHcnYIB+3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16025806},"main":"main.js","engines":{"node":">=22"},"gitHead":"134733b70d25d0a01befd195fa7c98df0e251159","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.176_1786465967596_0.06839488990939424","host":"s3://npm-registry-packages-npm-production"}},"0.8.177":{"name":"iobroker.nexowatt-ui","version":"0.8.177","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.177","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"ff15969b84916010520965801f76a1942ff43119","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.177.tgz","fileCount":252,"integrity":"sha512-DLn+xRE2GImnPNE4eulzqsm/LWYnRZAb4aAfxpMSwEFZoj+RuZ2156Z0+xmCjsp4PsbEccDwSvthel1B6+SUGA==","signatures":[{"sig":"MEUCIBLiBo5Yczccd7fmMQ4pDqMvvslxbau70WrD/94EsXIAAiEAoxw2UxKkn8SfVeDMOlY8F6SrZ3Daw2YqxR5SGvM2034=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16101996},"main":"main.js","engines":{"node":">=22"},"gitHead":"0d0d090c4ea862dbf806e30c1f2cc4e7b0f89562","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.177_1786471662735_0.49410489634406396","host":"s3://npm-registry-packages-npm-production"}},"0.8.178":{"name":"iobroker.nexowatt-ui","version":"0.8.178","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.178","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"bea412415606980d06a17bf96460ddd91e34a9f5","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.178.tgz","fileCount":254,"integrity":"sha512-9U5RbAB1UsntcuYXlcyBTYClCMxjegFX6vxhdS4QoQOyp6jM67gmf2pIqa0Z01jw2CfwvMSCliTtCFJ1aeyLsg==","signatures":[{"sig":"MEUCIDayeKujsl+GbISOBsWI0nIf5Irdf+WWQuKzBfVj3sMUAiEAo8mqUFDLhZOUNKU511IIm22aItejfVO4Eg7XC4iKtmw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16235500},"main":"main.js","engines":{"node":">=22"},"gitHead":"0d0d090c4ea862dbf806e30c1f2cc4e7b0f89562","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.178_1786475188577_0.6046961523344405","host":"s3://npm-registry-packages-npm-production"}},"0.8.179":{"name":"iobroker.nexowatt-ui","version":"0.8.179","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.179","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"800c0ea2a51b5a4e8fb1e5ea368b8dfa737012ed","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.179.tgz","fileCount":254,"integrity":"sha512-r5qc5xYoZp3jHypI5jxJY/aRM8g9vuWJEhAKKu93jEgpsRzMBKDpxOTGw1UOhq57YuarTFPvwdQyQkuGzafPyQ==","signatures":[{"sig":"MEUCIQCxaLkt1R5grjjh55ewAzocLHsG41sbaUto2ag9FMDUcgIgW7cvDlZ7lGQ0n31/AvbBwLXNWT4uUhriPJx8tLr4fm0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16237926},"main":"main.js","engines":{"node":">=22"},"gitHead":"21e84e445e94a781c38a00e02e2925c7fe6739ff","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.179_1786514076057_0.6175412631055641","host":"s3://npm-registry-packages-npm-production"}},"0.8.180":{"name":"iobroker.nexowatt-ui","version":"0.8.180","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.180","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"965bb66fa47face8d1b0b60c625899351c51cb6f","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.180.tgz","fileCount":257,"integrity":"sha512-FJ+gBOvJhJYFsVEuGmGyiUqL2l411jRENbd2wMfKemAZ6ISQFZOTRAvu1jLj57pPYHH1bwQJLA6za2PJ6MkLfQ==","signatures":[{"sig":"MEQCIGvDwCoIgwJoDeX8hvWvlEW2UCgqgiB+/oQCJqJdS+tBAiAXFm5+/x5AAihAyU78VP9qdq9PRa2ldDtsBJBpAA7DGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16394391},"main":"main.js","engines":{"node":">=22"},"gitHead":"21e84e445e94a781c38a00e02e2925c7fe6739ff","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.180_1786523083580_0.9352263396616733","host":"s3://npm-registry-packages-npm-production"}},"0.8.181":{"name":"iobroker.nexowatt-ui","version":"0.8.181","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.181","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"96a27169d436f8a50f8ea3d80c7e75100868f751","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.181.tgz","fileCount":258,"integrity":"sha512-VVSj32TCWsMA7Aj8Y/IuoGOp88kPm+h3bmG0XgsL+aDtp5KHCuB8appu9H1c1+bz68EKMoWu48orjDExXNPWNg==","signatures":[{"sig":"MEUCIQDYY/q/pCYjycRp8a1v3t+lRz0nVE9AlAkAU3fD2YE1NAIgPji+WnGRK0VDE0lR2BKjAoVd6MScroGFj0ZXmKnuT34=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16417481},"main":"main.js","engines":{"node":">=22"},"gitHead":"fe2547fbd40123bd39efe50f5300d9600c89dce7","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.181_1786559017584_0.42182080869105687","host":"s3://npm-registry-packages-npm-production"}},"0.8.182":{"name":"iobroker.nexowatt-ui","version":"0.8.182","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.182","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"bee13f80bc63a9099095557a3d45983101d81349","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.182.tgz","fileCount":259,"integrity":"sha512-4Yu4HOPjTr1Vk7801+urWr0gLXw/0lyXnXN7FdRELwq45zdTt00oxbeoj9dSNL0MFKohKy5CU73GBYZvneUgXA==","signatures":[{"sig":"MEUCIDyZ6FPVcK+V9oUPPQM4vk83eBeSWtBImAcX6LjUzScEAiEA1fec6wjauLoAvpA0IfbbLec7IyjluIdNliqG/m3TJag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16443005},"main":"main.js","engines":{"node":">=22"},"gitHead":"74f16ddcf2c72d2fff1e061d92c624c1bb5c593e","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.182_1786562889278_0.9072171664682687","host":"s3://npm-registry-packages-npm-production"}},"0.8.183":{"name":"iobroker.nexowatt-ui","version":"0.8.183","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.183","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"17bc39922acbb24d41fc545f9e8178301618cfea","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.183.tgz","fileCount":260,"integrity":"sha512-VyhGB7dWcNljS4rTR3l5uh6FbGFmeGdXmyqqaNfOfryYnWCu5JRMhWDBr2KRymOMUK0LpGVkMQM8b/jF4GGXZA==","signatures":[{"sig":"MEYCIQDdMzHeNmIM0vyKU5Ulw9HhxTMBAadarCWo7E037SjxXAIhAJiak2G33eOeb8aRSPHN4T3a+/1btTTW7T2IRAz/veLA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16450178},"main":"main.js","engines":{"node":">=22"},"gitHead":"c846f175ed8397155f12ec98526e8250a35ac8c7","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.183_1786607651478_0.50857961321782","host":"s3://npm-registry-packages-npm-production"}},"0.8.185":{"name":"iobroker.nexowatt-ui","version":"0.8.185","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.185","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"75afa71854709acf1c7d524bff8ef8c9e2fa804f","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.185.tgz","fileCount":261,"integrity":"sha512-QJFJN46sVK0fL3M7tijjKSHBzNkjCRN/MsUAj5uzJUhRgYSV/CzL/C3GdUBR8AKsyO37TGyzrubf0kiC8SqaMg==","signatures":[{"sig":"MEUCIQCz77AHQOTL+V59njL2iNE4/sc/IMWRtajNRYZkYfe93AIgEShVxLTHx4Rc+vS6WqM8rZwkxc9RuKRqYfl52Sv5iZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16502066},"main":"main.js","engines":{"node":">=22"},"gitHead":"42afb6401b070db1abb82666f2d3422d38c4ff7a","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.185_1786688203654_0.268812601860662","host":"s3://npm-registry-packages-npm-production"}},"0.8.186":{"name":"iobroker.nexowatt-ui","version":"0.8.186","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.186","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b473ef0eb36997ac743bd205bb7d569b8605ca26","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.186.tgz","fileCount":263,"integrity":"sha512-tES9Uf/fMMWMDDyGS1K27BhNf+dhTlhe2ctir8AL9QDwv2XfhzeqPUXZAX079GSjYHxANlI1LOuixd+KBMwvUg==","signatures":[{"sig":"MEUCIQCpFblnjiNMxohlCgrJG4j7ktlWF5i0Fx1/opWPe743rAIgWCG3HqXcbDUJ/PQLasfbixSSqdaqAPJmkACKbCANw0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16537142},"main":"main.js","engines":{"node":">=22"},"gitHead":"42afb6401b070db1abb82666f2d3422d38c4ff7a","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.186_1786812722597_0.22317314953419376","host":"s3://npm-registry-packages-npm-production"}},"0.8.187":{"name":"iobroker.nexowatt-ui","version":"0.8.187","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.187","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"5c89acce9d6a80a6f50a0dcd3fa3257d245443e8","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.187.tgz","fileCount":263,"integrity":"sha512-/V/7wKmRXzbLJKLXO5gqjujTqcrMy4wIVQzQzG+JHnP9/Qz4Ur+xg49XFeZn21IJF/9njHrsvMKSH6/ndJN5HA==","signatures":[{"sig":"MEQCIDweXWVjtoHVQ+4h0UNw/f8nxYvYfIflDDjjNM8359RfAiA7EkSGHXvpl32HuinAyCuiLh0STUDyT0D7tb3de1aORQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16540467},"main":"main.js","engines":{"node":">=22"},"gitHead":"952126988d436941ace4de9ec688e2f736d96530","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.187_1786818383496_0.6936957622187816","host":"s3://npm-registry-packages-npm-production"}},"0.8.188":{"name":"iobroker.nexowatt-ui","version":"0.8.188","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.188","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e60df3eda7aa4e0633b423db2805e093eebdb464","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.188.tgz","fileCount":264,"integrity":"sha512-0gIErvU2l4gssPw+ErBJfHj60GUZl+rAk7jcub0DOKNwVttpWand/SAs9QJYTk64hhxNFwwwEuDLbsUYsat5CA==","signatures":[{"sig":"MEYCIQDOo26GOVU079PI0OFlKiuxVoCFfR+siDQ0vrS7L7MK3AIhAOfshNedGzhaPoj473ItkbFe7pE2Zg0hul2gFYgB0efM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16560526},"main":"main.js","engines":{"node":">=22"},"gitHead":"e27951af1845bbfc76dd55af59a98fda3199a7fc","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.188_1786905626929_0.02548757571233562","host":"s3://npm-registry-packages-npm-production"}},"0.8.190":{"name":"iobroker.nexowatt-ui","version":"0.8.190","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.190","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"29a73f8690e844f76cb6602403d0c110838e2f85","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.190.tgz","fileCount":266,"integrity":"sha512-thiArlFQzRayoe+iRSfEe4FqMcT7egfpdCg3Rc+vPmuw3qXZlbWJKHMO8oDE841eq3qqB7LXTZr6HHt9lFqA6w==","signatures":[{"sig":"MEYCIQDeURh0Nx0nSCe0I1cLHS0yVGZWUqFvfwjOhRFuWa6DQgIhAIAJ3rwsNwY53vIqRqzwHmtFN6hBv+ptmk+DVBwFIS2U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16571130},"main":"main.js","engines":{"node":">=22"},"gitHead":"e27951af1845bbfc76dd55af59a98fda3199a7fc","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.190_1786911914809_0.07631720304262446","host":"s3://npm-registry-packages-npm-production"}},"0.8.191":{"name":"iobroker.nexowatt-ui","version":"0.8.191","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.191","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e19af8dbe79a8c3c2c30f749d89eeee6b04afb06","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.191.tgz","fileCount":269,"integrity":"sha512-HTB6YHThLCWHpSCT53nb4oKEe3N9z4+XxPbv+Vdea7o63doA3jZV9u5nbWxRI4Nn9/h9rUHhDrNdn0xruNm/KA==","signatures":[{"sig":"MEQCIDmT1smv+/FAI8Dg8AxTva9WbuUlqgFlNILwjte9Lq7/AiB3mDfK1ZjJbL9kFDft/TGgBt9+Ru6zVBLjEo81ezS7YA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16812712},"main":"main.js","engines":{"node":">=22"},"gitHead":"c335817eeeb31b11ae01a033ba8051bce69e7203","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.191_1787001346388_0.17471002125464064","host":"s3://npm-registry-packages-npm-production"}},"0.8.192":{"name":"iobroker.nexowatt-ui","version":"0.8.192","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.192","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"3894848ff9eefbaaeffcbea3ab9dcf8e2fc5c1e0","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.192.tgz","fileCount":271,"integrity":"sha512-abyAzF3MH0Z47SoQi+OiGUcIwxp54l3lbXOAqD8sGcssqqfOL4inqjRL9iHzqheiC9q93wUCMCEzI3YIXrZbqw==","signatures":[{"sig":"MEUCIDE+1v+RX0VdbZvHbPnngCCFcZVZvlYrLA9o+xIqczhPAiEAs4WjLmPgc7Iux1rPvrUIH5nd7VYE8HkkI86f8/2vxkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16818487},"main":"main.js","engines":{"node":">=22"},"gitHead":"d99b53dd89fd230f8c31986ad899de285aac8d8e","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.192_1787251366197_0.8566052539362139","host":"s3://npm-registry-packages-npm-production"}},"0.8.193":{"name":"iobroker.nexowatt-ui","version":"0.8.193","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.193","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"8e9488bae594c6c85ad3e01821c09dc638b1b7d9","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.193.tgz","fileCount":272,"integrity":"sha512-OUFRVe/B5ofnaYirxDBih5lPv7z2h76A4WO7YgCCvMGNz1w6GRUreEcRbmetsWG1yNDNKG3cPKZAMRraUDUN5Q==","signatures":[{"sig":"MEUCIQD1PtGwFL18j9WCqCOCQgZ3tvRSscFCMDnkrHf3nEkmOwIgEHV0mwlNUWCUS9F2VrpMgxurDDy8FhM+/fEj8D01Seg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16823255},"main":"main.js","engines":{"node":">=22"},"gitHead":"20e458d3af0811b46d1cee165b48f9cd6ffed0aa","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.193_1787326164255_0.38651306227243754","host":"s3://npm-registry-packages-npm-production"}},"0.8.194":{"name":"iobroker.nexowatt-ui","version":"0.8.194","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.194","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"2c8e86a1409174cf0282ee2a44c9ff1f1e3be639","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.194.tgz","fileCount":274,"integrity":"sha512-TMSW9Qbj4vJ5lV3HimSNWLMKKDaEvOmaNiB02mPPn+JcyDA54pQAaFEjR/qKt4mKXZO8TSDF3QwNWO0iDDZmAA==","signatures":[{"sig":"MEYCIQCm3bNztKmQpvTZzS963sRGai0GdWT/p8t19g+07dQ+3wIhAJjSLVEcYc3JILB+2Q6kyNO0zoxF8J0tgfBzG9qLUut9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16865221},"main":"main.js","engines":{"node":">=22"},"gitHead":"cc25d619b8e1c2973c979a96115bae80a1923ae7","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.194_1787331997170_0.3073907496926016","host":"s3://npm-registry-packages-npm-production"}},"0.8.195":{"name":"iobroker.nexowatt-ui","version":"0.8.195","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.195","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"ed3f4c32bfa9bb789534864732f45d16630ca9a8","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.195.tgz","fileCount":275,"integrity":"sha512-H22f7vGjlSH9ovBN/dsw5rCv6sjOimOqCLz1cKANvbBZUjSP8icopnqlrhl5fn8yLaU11RFCs6WItLKtVtd3MA==","signatures":[{"sig":"MEQCIFA9Kz6bkNxChdUH0iOvGuGl5tfHDQKgffrfryAadpZhAiAVSr+A2GWf8zcBmYDRq9RngYcmu6E8uLbMXWyCg/Q5vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16867864},"main":"main.js","engines":{"node":">=22"},"gitHead":"dc3ee049294eb557d437ee28635c89d8b618370b","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.195_1787337249566_0.20163582784611078","host":"s3://npm-registry-packages-npm-production"}},"0.8.196":{"name":"iobroker.nexowatt-ui","version":"0.8.196","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.196","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"57fe55d4451563c6806163d2fc392c452656c304","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.196.tgz","fileCount":278,"integrity":"sha512-L34xhM4IbuhvYhJwhUAzsiaJYExP9yfuGLwRc7UudpijsuqgzE/R+06vUbME/afnQ/eCgHi5gBsZFi1dw8tQFQ==","signatures":[{"sig":"MEYCIQComlCAI2n++0Pdw7n3j1nz1cAMBW+MbZrkckbc3lYM3QIhAI3IrY0/sMfuWXbP5nuELTxhWWBtV6bxaLojuY+X7Ld5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16899181},"main":"main.js","engines":{"node":">=22"},"gitHead":"c0ccb8e0ec173cadc7561331d6bfffff5212c2b9","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","release:manifest":"node scripts/generate-release-artifact-manifest.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:rc71-forecast-aware-auto":"node test/rc71-forecast-aware-auto.test.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.196_1787378950217_0.10829666695319728","host":"s3://npm-registry-packages-npm-production"}},"0.8.197":{"name":"iobroker.nexowatt-ui","version":"0.8.197","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.197","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"df8e097425c0f664dd4a2c999e7fc17c93aa165b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.197.tgz","fileCount":280,"integrity":"sha512-2C4mw0XZVQpRv6HM0tl9Mixwca4SnkUu020GmPChpDnRQehaJ2H6qsSuvxNa9BBxG/tbttpiffvF0rAnEF36mQ==","signatures":[{"sig":"MEUCIQD3nnMwNFYYITaJ2fd8ilUTKDNQvp0CKFZ6SONEAEjJigIgDqDldZYPzRNZ41PD6lEvQS47Q8cFkRa3+wVSBSdUGkg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16944857},"main":"main.js","engines":{"node":">=22"},"gitHead":"c0ccb8e0ec173cadc7561331d6bfffff5212c2b9","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.197_1787409417165_0.17124454222166063","host":"s3://npm-registry-packages-npm-production"}},"0.8.198":{"name":"iobroker.nexowatt-ui","version":"0.8.198","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.198","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"cddb6b79eccd03c358788c07069c07b6c4a9d2e9","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.198.tgz","fileCount":282,"integrity":"sha512-aNxYsG8x0zafh8PHPrfNHHaaSmZHH2sqPYZyA4Xby6xTPp7wdae8deVs5k6Gs3evsGxR3g1RHsInFceJKiVMmg==","signatures":[{"sig":"MEQCIB4fwJSGwrOdPpAxYaO+6WP2NExHjN4u0CBwQCYYCjQxAiAfWWer4MDc3AQXiGjV/wOyim3fag9by3sgkoyJutA5tQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16987040},"main":"main.js","engines":{"node":">=22"},"gitHead":"6d87f40e40d2b7451470268289529442fe839260","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.198_1787416796002_0.5445643903629245","host":"s3://npm-registry-packages-npm-production"}},"0.8.199":{"name":"iobroker.nexowatt-ui","version":"0.8.199","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.199","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"eddba2881e471e9fa0ff0d66731f29a21444d396","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.199.tgz","fileCount":283,"integrity":"sha512-ryC1Te7JI4gWEbauJYUGn+kgoSmBQRcomBON3FzxKAICMmi2NPGf/8fb/6xPmzBYV9r8ZZ7PlCRP2n1vII+MAg==","signatures":[{"sig":"MEUCIQCi5kW153i8HbAxN8t+TaFAAqJ/h3N61IkndIY+O3OHBQIgCiSnTmnROAYD9tRaTc/3ceDIqDLkurtVvIRl4VSWG0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17022331},"main":"main.js","engines":{"node":">=22"},"gitHead":"14a3ce06bd313c0db101bd775a478a1e593203ea","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.199_1787429865673_0.9223420793357939","host":"s3://npm-registry-packages-npm-production"}},"0.8.200":{"name":"iobroker.nexowatt-ui","version":"0.8.200","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.200","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"3f677aa9ca3c076efd956b61775ba6000c498b50","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.200.tgz","fileCount":284,"integrity":"sha512-JhbCY5kPlRByCk2wfz9v+PKV27gN2D9LHeyl+2nR9mT5nV2h86vtVffWHelAeMkk8Lmldw4PaNI1sO8TT6RThg==","signatures":[{"sig":"MEQCIFtL8WPFOLUbg13PUnBKzmIm9Oldt+iPwAocmKqcDCYZAiBYfZemS0N+CHDlS1wHaTRBisuzj09BQE/rV+vST4y8lQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17037815},"main":"main.js","engines":{"node":">=22"},"gitHead":"0a51c4e0c83ecaf75a0cc6473a807bc6e62ffbf0","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.200_1787460001646_0.007090540282174818","host":"s3://npm-registry-packages-npm-production"}},"0.8.201":{"name":"iobroker.nexowatt-ui","version":"0.8.201","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.201","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"9681dcfc350a7351b0536b38120600bc91d90c94","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.201.tgz","fileCount":285,"integrity":"sha512-soW5c//BBKZKPHGF9LhlyEgQ/cl4i3PgxPiCGgGDtvs8pBWYexatCqrEUF+ryXSC0A1LfYRZp2GZ5tqfFT2zMw==","signatures":[{"sig":"MEQCIEV8IaLMprCRTydpIJ38KqRuY+RS5YwarIyyJx1Ko0aMAiA/ys8ySpc2dvsMOnTHJ2zxiKtLunJl7TuVeK46xUbs1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17060213},"main":"main.js","engines":{"node":">=22"},"gitHead":"ca40ae31538f17dffc92f1f5354b7840df3e27ce","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.201_1787468295653_0.6736691896987497","host":"s3://npm-registry-packages-npm-production"}},"0.8.202":{"name":"iobroker.nexowatt-ui","version":"0.8.202","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.202","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"c9e0cad287c154def02ecaa73c56364404071a3f","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.202.tgz","fileCount":286,"integrity":"sha512-1oV/yht+8SkiV7PofchGIT2gLGP2iOQP0vaplOqV1tE92a0Lid7zD3nGAqnX6smMvoAgI6cEFUWZ6IcPOSU5JA==","signatures":[{"sig":"MEYCIQCOzEkmWOuUtd9B9PBzi9OMPyGepe+6fV1/rTe93bnJ2gIhAI0D+D/+G7INBMm7ZTXyHP9xPYPX65uFTg0RRpSXNM/g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17078342},"main":"main.js","engines":{"node":">=22"},"gitHead":"94ac307f8d0bcb0eeb6d0c133aeb4895d3bbdd2e","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.202_1787567685011_0.9494623444241275","host":"s3://npm-registry-packages-npm-production"}},"0.8.203":{"name":"iobroker.nexowatt-ui","version":"0.8.203","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.203","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"ec1bfecb545878a93fea1f8522082cf862cd394a","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.203.tgz","fileCount":287,"integrity":"sha512-gpeuRj1k88W4tixRHY5lYikAGXRH+bmmy+N0nJOJJb+jgZa2QDlwU9L5dhVk/z3fDThOmkkFDyRlXnrSh4+OeQ==","signatures":[{"sig":"MEYCIQCwPHnZMy4A7BDLpvUAQXLPljGRnXBeWPb5J/KSMX3fkQIhAKVxXsf6cAwHI5Z3N/6Y41YSW2i7hOVvwzya0Vet5syi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17085700},"main":"main.js","engines":{"node":">=22"},"gitHead":"94ac307f8d0bcb0eeb6d0c133aeb4895d3bbdd2e","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.203_1787575678378_0.009845919042573703","host":"s3://npm-registry-packages-npm-production"}},"0.8.204":{"name":"iobroker.nexowatt-ui","version":"0.8.204","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.204","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"b08f1ff1623bc17201f09387b9a6dd6a1b10bfe1","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.204.tgz","fileCount":289,"integrity":"sha512-JaWsOCNyoLWVWKupkkDLw3mq93z9Ow0V0Q/94FfNV9wo5sEce6TwJOjIV5UO7aw5p5Qh6lOelpitgRbQX5bggA==","signatures":[{"sig":"MEYCIQDErOFbfyDSzMuQTznL97S+qAc2VndRIBpOP8A4yND9pgIhALv5zmKgZM3d9JgN1K1uHev4qcEFL7QbTxOh2zfpA3zm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17101064},"main":"main.js","engines":{"node":">=22"},"gitHead":"9ef92c88b6665bd289d87b7d1c18fcbe9d76dd49","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.204_1787600967060_0.799145156738956","host":"s3://npm-registry-packages-npm-production"}},"0.8.206":{"name":"iobroker.nexowatt-ui","version":"0.8.206","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.206","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"aa0cc481f12159c1d9dcc0250c1d7c7231043a9a","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.206.tgz","fileCount":294,"integrity":"sha512-b6+mnSbeHiGHIaTZepVoDWmkez4oNet6c1EyUaEH/v9F8p/o+s8Np4jfozhf4cY9fPNin3c8oVyxOmCn9m7XrQ==","signatures":[{"sig":"MEUCIQCoID5vbTDzsUFrPVWFzhHUNOoprLUUtygRo0r1FirHhgIgLV9Kjh4DYeVUkYY8y+rxnCwpDJn1NrkElImcQnPLPx0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17118302},"main":"main.js","engines":{"node":">=22"},"gitHead":"166f7c945c90cabe570f7ec74d2df2c698e709ba","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.206_1787629863038_0.23727759153919292","host":"s3://npm-registry-packages-npm-production"}},"0.8.207":{"name":"iobroker.nexowatt-ui","version":"0.8.207","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.207","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d44bf59fb28339047b40de1bf32681d69720a9d2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.207.tgz","fileCount":296,"integrity":"sha512-iFGpELY8+6Q+cpKEcZrmXCvUby2s/pVCgsfYP2L7ZSfrEiZIRhVvlhq+QaSfMAjvApd7CjwVnZ/xNZ9dN8HRcA==","signatures":[{"sig":"MEUCIQDPd+0wvED98+CBNamyQQV59HeNGMFRgFvDOiL5odEMFwIgGYv4DM/9/YQonctzL0ma56qX1yaCulHKEupoR8Brr5E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17138698},"main":"main.js","engines":{"node":">=22"},"gitHead":"48face8e19e2e2e32a9817551fbe1d4aac08817a","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.207_1787645999696_0.9241418161568973","host":"s3://npm-registry-packages-npm-production"}},"0.8.208":{"name":"iobroker.nexowatt-ui","version":"0.8.208","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.208","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"06b5eb648719175ce956ca5f552a04323c3f4512","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.208.tgz","fileCount":300,"integrity":"sha512-3ZLCMKEpLSsZc2t/fqIl4UXXByvCZLjUn8AlqdM+3GWSp7Y6AilVM2v5fLbdRbnXNNjuB1RAk3zHI1usFz4VTg==","signatures":[{"sig":"MEUCIGRP5D53nqm46EW7Ln/PeUqkOrSAQZRbQMSIGSgYAOUrAiEAg1mcnmN7Uv5j8Vn44aJf4ILbNXAKscQaQFZwmPf1fwg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17181535},"main":"main.js","engines":{"node":">=22"},"gitHead":"8761233137286a3336e6cdd25f5502aed45ede5b","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object","build:all":"npm run build && npm run build:ts","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.208_1787653390479_0.7142270662361216","host":"s3://npm-registry-packages-npm-production"}},"0.8.211":{"name":"iobroker.nexowatt-ui","version":"0.8.211","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.211","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"4290d705a37b7502a61aecef61bdc19a29ef4534","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.211.tgz","fileCount":305,"integrity":"sha512-pwtswAPTGvPdt/dejxBpEy6oH6YlcAxewsFTvVJ1mcc9w0pmhSHvMT/WboaRloqM2ofKlIezYoUZK0uoCPk0Pg==","signatures":[{"sig":"MEQCIFRe5XKpMD1RRXWmq/WzG+PDYh3X3251GSYoiQfUi5WvAiB+FSs/Skk61koLlEUyKVidrPpPuSiWWIi0sDhBBVMMFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17257200},"main":"main.js","engines":{"node":">=22"},"gitHead":"8761233137286a3336e6cdd25f5502aed45ede5b","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.211_1787716270837_0.13853144491210356","host":"s3://npm-registry-packages-npm-production"}},"0.8.212":{"name":"iobroker.nexowatt-ui","version":"0.8.212","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.212","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"8043f37e32456058fd6961eef6911c0caa122eb4","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.212.tgz","fileCount":306,"integrity":"sha512-qMVU1bBq8iyZMS/ZmsrEvkrS1sKrd5Vz4/82W5Tt+Vl5g/rRtEU9vpJ7DYfhDkUgdQ+9x498ZRrCdd6y0OkcGQ==","signatures":[{"sig":"MEQCIEBolx9+NedOlrod54gfev7LrHM66pKsUxUlNrNorYXNAiBw4sG6QwJooD0PiipQhV4ICTRE2b5/ZPQzn65Fds4vDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17276522},"main":"main.js","engines":{"node":">=22"},"gitHead":"a81242cda572a74e1a2db15f4c61297ba4c26ef0","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.212_1787765127155_0.1332784952938495","host":"s3://npm-registry-packages-npm-production"}},"0.8.213":{"name":"iobroker.nexowatt-ui","version":"0.8.213","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.213","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"7f424aa58eb65441ef0a743c2f2ef7023208f08d","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.213.tgz","fileCount":309,"integrity":"sha512-ljilBkvBKyqhJBicO0pFL4W4KaGRavXWrh+9FMuk1zyN9eYK6Q15ABoRvHmsoTfCjso1j0dEyyhs8DklUHCXqg==","signatures":[{"sig":"MEUCIDa81XcN3M2I9aqbsZeHrZKokny2vaemDv+zuqZ9LPWjAiEA1oEvzgXNwhZrvRNqegG0xuUSCzY+Pd3wcSY1sxBviXA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17322211},"main":"main.js","engines":{"node":">=22"},"gitHead":"a81242cda572a74e1a2db15f4c61297ba4c26ef0","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.213_1787772914891_0.8369167846759191","host":"s3://npm-registry-packages-npm-production"}},"0.8.214":{"name":"iobroker.nexowatt-ui","version":"0.8.214","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.214","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"f3c1635274535cdee0441e435fa8782d792a7615","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.214.tgz","fileCount":311,"integrity":"sha512-BUsAzKNs9it6TCpvVppEsUsJngN0XF6K59jK7Zeh1fHA+WoTG+EcDpieNgB29ZggGNAE1MjbCw41UKYQoDEiUQ==","signatures":[{"sig":"MEQCIDQhyqeLLRPfos3RydK73zO6SdMpBeX0atg024zivY5WAiBHRmIXRowp54N0uHqd4elqruGIrnrRTmfOZ8pPHzsQIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17352398},"main":"main.js","engines":{"node":">=22"},"gitHead":"4a7f42ea7cf37cc3ec7c7d106f4fce6e6c48ec8c","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.214_1787845316772_0.8808914410984137","host":"s3://npm-registry-packages-npm-production"}},"0.8.215":{"name":"iobroker.nexowatt-ui","version":"0.8.215","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.215","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"cf028b35b913fa6532ad293636747940b7aca2b5","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.215.tgz","fileCount":311,"integrity":"sha512-Vb8pEEBLORbMYB/+gueVFIvyMzh/eC+TAf7/6GMy9sciKKC0Y0CkoZd3us/BI3FPhhu2IvciMKP4J3ZLBvQC4A==","signatures":[{"sig":"MEQCIAQD4K+9txXGccU/GIogSg3d66Fcs3AYtWzfAWuurmROAiAa1c0KRyo5JGDlwtpCWpwRvwLQihm7eUW6OC26O1+7Vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17354766},"main":"main.js","engines":{"node":">=22"},"gitHead":"eeafd6650b9643d66e5ea01715d1b5cfe8261150","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.215_1787856058249_0.48789521528078805","host":"s3://npm-registry-packages-npm-production"}},"0.8.216":{"name":"iobroker.nexowatt-ui","version":"0.8.216","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.216","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"08f420ff5ea513c8e7b2f8ddddb2c167d6d4fdca","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.216.tgz","fileCount":311,"integrity":"sha512-yZOGIc7otAQfvUw3K9ves1oQOtNhfRfOVEJJghEWLnO+zwFr8n8AaWSK398kiMs0FthN0f8NeFrnswaCCrg7ag==","signatures":[{"sig":"MEQCIHxlItwFocZEoWo1sbw/WcZiWShx5deW2bppI6LCFQtYAiAfgnC1kNzsWYFmk0OVpzlPs0cwY/EhIqOHWVjNtv0cjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17359447},"main":"main.js","engines":{"node":">=22"},"gitHead":"8226de60e65666b13b86ecf5ba5a9f1666a4051c","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.216_1787991327013_0.18789522911127565","host":"s3://npm-registry-packages-npm-production"}},"0.8.217":{"name":"iobroker.nexowatt-ui","version":"0.8.217","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@0.8.217","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d057daf0d1c56d798734fca9d280ab71c2ddc2a6","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-0.8.217.tgz","fileCount":312,"integrity":"sha512-Rg9J6myAO0HB3ZTYjDiZoGdmTyhcXu916R5bNUeNnnrvS1zaeeaAuLlojotUTNJi3IzUhY11YfQjuO1mUVtnrA==","signatures":[{"sig":"MEUCIQDvNS95w25uy5YTjNlo1q5xO/Myyv/foVUudfFhuaG8KQIgTa43HSvJpMpqnZkK5sIfrxxzoYjDDfdCM6rHvaA5IJU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17388622},"main":"main.js","engines":{"node":">=22"},"gitHead":"0d9c11cd0e9331350c6ec35893ade941a5805f67","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm pack --dry-run","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.10.0","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_0.8.217_1788109684450_0.7708849859761808","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"iobroker.nexowatt-ui","version":"1.0.0","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.0","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"108ff72aae067b3abf5e511ac09da00d2e969f3b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.0.tgz","fileCount":316,"integrity":"sha512-2LTKShvOWDefYl58jVTvDN7jzjZWhX2PCkMg2U7ageb/6gQWALI6Tm+KxhCjy5IpWHMj1vK4vajKqUFubJ9DfA==","signatures":[{"sig":"MEUCIQDb0xZOXNtWOCbdyHWyttbSWClODTrCIHXDiA4j1xHDBgIgSlKuetDS2KjaWawVW26ujaHiSHcQ56vpbeBkco5CP3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17470040},"main":"main.js","engines":{"node":">=22"},"gitHead":"8a8594bcc87691d31c38abe0cf931810602da269","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-release","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.0_1788684602309_0.25605789185726247","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"iobroker.nexowatt-ui","version":"1.0.1","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.1","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"c503f3b12ce7a58c462454f6453c14bd07b27e2c","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.1.tgz","fileCount":317,"integrity":"sha512-knkC/K6O5EMcppIRZJDAEoILuvShh5LvKl3E/2ctQ3r2enwr/3PaRPmr5nU59tSPVkMEkKVbmaPLPHcYYgwZtw==","signatures":[{"sig":"MEUCIQCbsbs/1Tizv60h7tUr91RdgYVUsOw80yeuVdU9XuTvogIgCfqDkUn0XpytW3bxlhYxreo4LqI59ZO8XCdLNGWNd08=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17482744},"main":"main.js","engines":{"node":">=22"},"gitHead":"09f5e4d99a7d3af6c7ef2b9a3802cdf40e000f4a","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-release","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.1_1788976765208_0.8030819332574748","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"iobroker.nexowatt-ui","version":"1.0.2","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.2","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"e1ce77e866b1723d49cd16346520da36033b8124","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.2.tgz","fileCount":319,"integrity":"sha512-ah2Z9jhKDBzKGajEbUM7Ih/RdylMaSsqUXWEwbRc4tK8Cpc7h9MSFdHyKZH5vc2u2y3YzRcSuTNepJF5t32/1A==","signatures":[{"sig":"MEQCIGnGVpTGP/5bY7VQLgmihYfIVIGeZSykB0XEY09WSWzcAiBBFe0pZCaIt6ehjAFwvkRdxPkO/uShndZyDaGttJjV+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17517209},"main":"main.js","engines":{"node":">=22"},"gitHead":"10c0a9a9c88e625ef804dab2487deb2b9dc2984b","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-release","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.2_1788982376645_0.2301120135238195","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"iobroker.nexowatt-ui","version":"1.0.3","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.3","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"26582ea4a92f588736f74f02e74e30561dd79aee","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.3.tgz","fileCount":321,"integrity":"sha512-oHHan0ZFcmXU/V9sgTyGzgYtX0C2lcEHaSUEqQIqIXYklRNp8eBRxpdyX/xoSNjqXHpzVKSLuLqYmR94GM6cLA==","signatures":[{"sig":"MEQCIGtX/+K0AawOb1q+KbbxubE02Vb8jB19M37gL1hwfNzPAiB9l9kHRSbYX2ZQ5gSvJCuHVZ8IqXl6/92qKfZfjNDyAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17546275},"main":"main.js","engines":{"node":">=22"},"gitHead":"bb7b5d89a12088e249deb3fa7d637e84d75bb611","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-release","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.3_1788985838319_0.10234783632509692","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"iobroker.nexowatt-ui","version":"1.0.4","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.4","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"abbceccb9b635db56a1bfe55c09476a9be6a4db2","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.4.tgz","fileCount":324,"integrity":"sha512-8zAI0k3vWKfbEWYs5zXCvDuyXArlo/cSH+lW8cxlbGgUfIlNuydlt+4iXxuKPFBUkatXhWHrdQ5pew3blDgIFw==","signatures":[{"sig":"MEUCIQCb1MAdJ5KCUaokwOPFP4xOZTp3X80WyPuBokNnYivBngIgevwsGg6c3kE2EWj2tdUaAvBRK9bR6xA+VTaxV0XC9XE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17616000},"main":"main.js","engines":{"node":">=22"},"gitHead":"4adeca0db3d46424f42de8633eee91c8b9d9efea","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-1.0.4-auto-pv && npm run test:stable-release","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:stable-1.0.4-auto-pv":"node scripts/verify-stable-1.0.4-auto-pv-phases.cjs","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.4_1789215798474_0.19926661130748613","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"iobroker.nexowatt-ui","version":"1.0.5","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.5","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d9f4183bd31edcc2f69ea34eafd49c4d6fdca974","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.5.tgz","fileCount":326,"integrity":"sha512-s7WuwI8r0pwT/0+QHcty5fZfHC09eB4oRBZcVEpdKqMxYkjd5xFSU/XZQK1caG0FUQ/Gas6TXS3HxONjzfpm9Q==","signatures":[{"sig":"MEYCIQC6afS3efV4Qr98ytBXToFAc8O6HqjBQHjlN0G3I5fGcAIhAI+y/bUuRHSrfSLkVCU3XPoO27B/gKdmQ9xtJxNamJQ5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17649841},"main":"main.js","engines":{"node":">=22"},"gitHead":"dadad260701be2e5593184df65bf4882228e7653","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-1.0.4-auto-pv && npm run test:stable-1.0.5-storage-protection && npm run test:stable-release","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:stable-1.0.4-auto-pv":"node scripts/verify-stable-1.0.4-auto-pv-phases.cjs","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:stable-1.0.5-storage-protection":"node scripts/verify-stable-1.0.5-storage-protection-telemetry.cjs","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.5_1789219854329_0.8207896497631737","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"iobroker.nexowatt-ui","version":"1.0.6","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.6","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"699334b70b09d8fadc3f739a60dd981e49e79a40","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.6.tgz","fileCount":329,"integrity":"sha512-RP2qXfBfx1e5BaE+8C3Gm4U+4RzqkuOR1j05h5zN7XGjBsQFXpuWdsiNesq+1RJJZPZn1Ud+QpxHtRBiKCDncQ==","signatures":[{"sig":"MEYCIQCQ6dARaO99z9a9TnEM+ktDXVRpGV8KDYPmN2SLdxGjPQIhALNHOfzUt6eTyJ6LuzRBdQjafC2FEgNGqEishzPZ8biL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17678477},"main":"main.js","engines":{"node":">=22"},"gitHead":"6bea4f4e122ca93e5b80b41a9900febbe7e4a859","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-1.0.4-auto-pv && npm run test:stable-1.0.5-storage-protection && npm run test:stable-1.0.6-dc && npm run test:stable-release","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","test:stable-1.0.6-dc":"node scripts/verify-stable-1.0.6-dc-control.cjs","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:stable-1.0.4-auto-pv":"node scripts/verify-stable-1.0.4-auto-pv-phases.cjs","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:stable-1.0.5-storage-protection":"node scripts/verify-stable-1.0.5-storage-protection-telemetry.cjs","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.6_1789488412670_0.6756817380379048","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"iobroker.nexowatt-ui","version":"1.0.7","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.7","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"2d2e24bf7841c4232a995398025b3dafd58b1116","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.7.tgz","fileCount":333,"integrity":"sha512-65zouVWCh/SOzghLCXi0prHa46a1x1YB2V4qn5TTPu4TICOFgBOuY4fxnt+xKp9DOLYYQSnYJWcNkrCUBhHWwA==","signatures":[{"sig":"MEUCIEKFrmDOUetIPVAix1g3O+CkxObSySWrDWHb3aThd65oAiEA7pyBlnhhs0MpkrafHpqzJ64b5qSRkJ2hPvs/0Prlhwo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCID8dAFAzcR0lN6A1VBdYxVWKyqM7E5LlQ5r5Fe3TvmCnAiEA5eBi6Dpu0d1OQqUl1IeJH5hTcCYWt7RnqYi3cB70HuY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17722629},"main":"main.js","engines":{"node":">=22"},"gitHead":"4e41f7342cc7e550b21e51cde208d9206cb0cced","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-1.0.4-auto-pv && npm run test:stable-1.0.5-storage-protection && npm run test:stable-1.0.6-dc && npm run test:stable-1.0.7-notifications && npm run test:stable-release","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","test:stable-1.0.6-dc":"node scripts/verify-stable-1.0.6-dc-control.cjs","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:stable-1.0.4-auto-pv":"node scripts/verify-stable-1.0.4-auto-pv-phases.cjs","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:stable-1.0.7-notifications":"node scripts/verify-stable-1.0.7-notifications.cjs","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:stable-1.0.5-storage-protection":"node scripts/verify-stable-1.0.5-storage-protection-telemetry.cjs","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","nodemailer":"10.0.10","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.7_1789667645054_0.7298008121095296","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"iobroker.nexowatt-ui","version":"1.0.9","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.9","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"a752f046e118bfa0aa1fbeef93693797f1269987","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.9.tgz","fileCount":340,"integrity":"sha512-e65Q42id8Nfhdot7peTiCuWFGbAqUKClYL5orsg4WigR5b7CWvl8TnmcQYHEJIAM24nNO7OTWTOTcVfwYDI0Eg==","signatures":[{"sig":"MEYCIQCBPYT88+/P+UgZHidS0ggy3cod19b1XNezNSO46v3gDAIhAOlddtH2nviOz4Uf8rSVEHeSkuVk8TgAMsjCbebHUe/d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCJoWTwKHDq7yuSfMf+OtYXCcWSrJ7ipjczQ2XBUx0KMgIhAOYiYSfPeajwMN24Y27HY0RkWCIbIWMYosZETDOExXA8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18244237},"main":"main.js","engines":{"node":">=22"},"gitHead":"2988b2937dd0283f7049fdc684fbc092a949f25c","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-1.0.4-auto-pv && npm run test:stable-1.0.5-storage-protection && npm run test:stable-1.0.6-dc && npm run test:stable-1.0.7-notifications && npm run test:stable-1.0.8-storage-licenses && npm run test:stable-1.0.9-access && npm run test:stable-release","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","test:stable-1.0.6-dc":"node scripts/verify-stable-1.0.6-dc-control.cjs","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stable-1.0.9-access":"node scripts/verify-stable-1.0.9-access.cjs && node scripts/verify-docs-layout.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:stable-1.0.4-auto-pv":"node scripts/verify-stable-1.0.4-auto-pv-phases.cjs","test:stable-1.0.9-browser":"node scripts/verify-stable-1.0.9-browser.cjs","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:stable-1.0.7-notifications":"node scripts/verify-stable-1.0.7-notifications.cjs","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:stable-1.0.8-storage-licenses":"node scripts/verify-stable-1.0.8-storage-licenses.cjs","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:stable-1.0.5-storage-protection":"node scripts/verify-stable-1.0.5-storage-protection-telemetry.cjs","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","nodemailer":"10.0.10","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.9_1789677093741_0.6745056685387079","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"iobroker.nexowatt-ui","version":"1.0.11","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.11","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"67c27ac873fca620f1bcbf86107e89e536ca559f","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.11.tgz","fileCount":348,"integrity":"sha512-67KFy+LBnRTYFH3tzRI2mXErBoOpmKpZDP8hAFT0gpXLSf4cFv2DrMQCwTvHtC0V4P/Qb+LakCVB8j0EV10dCQ==","signatures":[{"sig":"MEUCIGSWq7OOWkgkuHXtSJMVWXCVoxoXwsWj4F4ZHBYZsKx2AiEA4Y0Fl3zTJkWBgFTL8kpci75ypwKBw3TFwpS5viOUvys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFDGRZ2F8mCORQ9gYrjxlguWSQBzD+vyEBAGkGGew4EuAiAsJv3cacYmrvTnXgvD3AZI3Unv+Qm7+t3BtaEg7vdh9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18435827},"main":"main.js","engines":{"node":">=22"},"gitHead":"390cbae38e06d2d5c1953973e11940f3b39ff559","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-1.0.4-auto-pv && npm run test:stable-1.0.5-storage-protection && npm run test:stable-1.0.6-dc && npm run test:stable-1.0.7-notifications && npm run test:stable-1.0.8-storage-licenses && npm run test:stable-1.0.9-access && npm run test:stable-1.0.10-security && npm run test:stable-1.0.11-documentation && npm run test:stable-release","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","docs:build":"node scripts/generate-code-documentation.cjs","docs:check":"node scripts/verify-code-documentation.cjs","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","check:secrets":"node scripts/check-repository-secrets.cjs","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","test:stable-1.0.6-dc":"node scripts/verify-stable-1.0.6-dc-control.cjs","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stable-1.0.9-access":"node scripts/verify-stable-1.0.9-access.cjs && node scripts/verify-docs-layout.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:stable-1.0.4-auto-pv":"node scripts/verify-stable-1.0.4-auto-pv-phases.cjs","test:stable-1.0.9-browser":"node scripts/verify-stable-1.0.9-browser.cjs","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:stable-1.0.10-security":"node scripts/verify-stable-1.0.10-secret-guard.cjs","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:stable-1.0.7-notifications":"node scripts/verify-stable-1.0.7-notifications.cjs","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.11-documentation":"npm run docs:check && node scripts/verify-stable-1.0.11-documentation.cjs","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:stable-1.0.8-storage-licenses":"node scripts/verify-stable-1.0.8-storage-licenses.cjs","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:stable-1.0.5-storage-protection":"node scripts/verify-stable-1.0.5-storage-protection-telemetry.cjs","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","nodemailer":"10.0.10","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.11_1789751362977_0.5857740242019196","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"iobroker.nexowatt-ui","version":"1.0.13","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.13","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"efdf2e10abf1bebe42621af92f7073f24a40dd3e","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.13.tgz","fileCount":355,"integrity":"sha512-LtEEZD0S3Zzd9X9ifcfa9707uhrT3avjdiV3CLcOYXFQIxidro+e9sD9U/+k2rCwtCweS/BlZNYM5BByL6UyAA==","signatures":[{"sig":"MEUCIQDkQb7O82WIozNVUzqhVqzU/ZoKQnW58car8g8120tJWgIgD1X1SPQiMx5JjDqeav+d1fx9Z1VQ2dmdU/86IIQxoQ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC7IlL9w3EUonqibgBeb3okw9F0gQ4FcAzQM82E7GxLgAIhAKxfjmjMM9EmzVT512JGqYyLwJhM19W0C7C71FtdZGC7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18687673},"main":"main.js","engines":{"node":">=22"},"gitHead":"8a15b5ab49c93273bda408ef7f09363e8f94ba1c","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-1.0.4-auto-pv && npm run test:stable-1.0.5-storage-protection && npm run test:stable-1.0.6-dc && npm run test:stable-1.0.7-notifications && npm run test:stable-1.0.8-storage-licenses && npm run test:stable-1.0.9-access && npm run test:stable-1.0.10-security && npm run test:stable-1.0.11-documentation && npm run test:stable-1.0.12-publish && npm run test:stable-release","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","docs:build":"node scripts/generate-code-documentation.cjs","docs:check":"node scripts/verify-code-documentation.cjs","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","check:secrets":"node scripts/check-repository-secrets.cjs","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run release:prepare && npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run release:prepare && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run release:prepare && npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","release:prepare":"node scripts/prepare-release-assets.cjs","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:publish-overlay":"node scripts/verify-publish-overlay.cjs","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","test:stable-1.0.6-dc":"node scripts/verify-stable-1.0.6-dc-control.cjs","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stable-1.0.9-access":"node scripts/verify-stable-1.0.9-access.cjs && node scripts/verify-docs-layout.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:stable-1.0.4-auto-pv":"node scripts/verify-stable-1.0.4-auto-pv-phases.cjs","test:stable-1.0.9-browser":"node scripts/verify-stable-1.0.9-browser.cjs","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:stable-1.0.12-publish":"node scripts/verify-stable-1.0.12-publish-upgrade.cjs && npm run test:npm-version-free-guard && npm run test:npm-version-free-runtime && npm run test:publish-overlay","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:stable-1.0.10-security":"node scripts/verify-stable-1.0.10-secret-guard.cjs","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:stable-1.0.7-notifications":"node scripts/verify-stable-1.0.7-notifications.cjs","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.11-documentation":"npm run docs:check && node scripts/verify-stable-1.0.11-documentation.cjs","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:stable-1.0.8-storage-licenses":"node scripts/verify-stable-1.0.8-storage-licenses.cjs","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:stable-1.0.5-storage-protection":"node scripts/verify-stable-1.0.5-storage-protection-telemetry.cjs","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","nodemailer":"10.0.10","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.13_1789753781811_0.4436602488914938","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"iobroker.nexowatt-ui","version":"1.0.14","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.14","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d9b089237ee7f14aa537fffc6bd5bc6314401d10","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.14.tgz","fileCount":364,"integrity":"sha512-4FPoQNBYrWr55NPncyFkOpeX5QoM4lYLAnqeI6oca6kuQrFE964cup/VN+wHI/6e+F5cRzIr8/oPT0pl0hFhRQ==","signatures":[{"sig":"MEUCIGXWh4jmYzMi9JR5t0UwKd4gUhfL02tZLkIXMJPWvTg0AiEA88ZbbYMVklLGVuSkRrlC/doZL2I0hX/t+Y+n06/Zyqc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDGQS2PT2E9fBoaj3U3YZ/YOwE3pW6e4wXKWU83UgVxAQIhANOpIz+tseYxYR3BOITk+ogq4idKGywMXVJaJrjTYwWL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18621582},"main":"main.js","engines":{"node":">=22"},"gitHead":"37576597db7463f0a450b5439998da70c6fbfa6e","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-1.0.4-auto-pv && npm run test:stable-1.0.5-storage-protection && npm run test:stable-1.0.6-dc && npm run test:stable-1.0.7-notifications && npm run test:stable-1.0.8-storage-licenses && npm run test:stable-1.0.9-access && npm run test:stable-1.0.10-security && npm run test:stable-1.0.11-documentation && npm run test:stable-1.0.12-publish && npm run test:stable-release && npm run test:mesh-coordinator","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","docs:build":"node scripts/generate-code-documentation.cjs","docs:check":"node scripts/verify-code-documentation.cjs","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","check:secrets":"node scripts/check-repository-secrets.cjs","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run release:prepare && npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run release:prepare && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run release:prepare && npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","release:prepare":"node scripts/prepare-release-assets.cjs","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:publish-overlay":"node scripts/verify-publish-overlay.cjs","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","test:stable-1.0.6-dc":"node scripts/verify-stable-1.0.6-dc-control.cjs","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-coordinator":"node scripts/verify-mesh-coordinator.cjs && node scripts/verify-mesh-coordinator-access.cjs","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stable-1.0.9-access":"node scripts/verify-stable-1.0.9-access.cjs && node scripts/verify-docs-layout.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:stable-1.0.4-auto-pv":"node scripts/verify-stable-1.0.4-auto-pv-phases.cjs","test:stable-1.0.9-browser":"node scripts/verify-stable-1.0.9-browser.cjs","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:stable-1.0.12-publish":"node scripts/verify-stable-1.0.12-publish-upgrade.cjs && npm run test:npm-version-free-guard && npm run test:npm-version-free-runtime && npm run test:publish-overlay","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:stable-1.0.10-security":"node scripts/verify-stable-1.0.10-secret-guard.cjs","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:stable-1.0.7-notifications":"node scripts/verify-stable-1.0.7-notifications.cjs","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.11-documentation":"npm run docs:check && node scripts/verify-stable-1.0.11-documentation.cjs","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:stable-1.0.8-storage-licenses":"node scripts/verify-stable-1.0.8-storage-licenses.cjs","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:stable-1.0.5-storage-protection":"node scripts/verify-stable-1.0.5-storage-protection-telemetry.cjs","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","nodemailer":"10.0.10","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.14_1789798425187_0.4470972870319081","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"iobroker.nexowatt-ui","version":"1.0.17","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.17","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"d650db1a196239de9db64476126853620d18e266","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.17.tgz","fileCount":382,"integrity":"sha512-KZsyYyr5aDx5MX6hMWRnGR5SMg48HsS4x9qOyPOFVcETC1mvyhJ/yz8mGzt0VGf2Nm1dN/+Fnn2aDjrDs8JW9Q==","signatures":[{"sig":"MEUCIQCG2QcpARJ948GIz5XkolU+X/dC8cVPvoXqvOplwBe67wIgEc3pQ80sa6J8vUXF0SAVfFS1KaZvF3JQo0JV18Itvw4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAtuaD0Av4MQIaMlKfWP9snhlUtQfiRYWFv3sXYLpR/dAiEA0joJOTxAIu8YLDPEcYJ+KUIjsug8gHexXlgBvEAn0Gg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18918617},"main":"main.js","engines":{"node":">=22"},"gitHead":"9cfe4de0a950901467a5c89d00862f181b29eeb6","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-1.0.4-auto-pv && npm run test:stable-1.0.5-storage-protection && npm run test:stable-1.0.6-dc && npm run test:stable-1.0.7-notifications && npm run test:stable-1.0.8-storage-licenses && npm run test:stable-1.0.9-access && npm run test:stable-1.0.10-security && npm run test:stable-1.0.11-documentation && npm run test:stable-1.0.12-publish && npm run test:stable-release && npm run test:mesh-coordinator && npm run test:zero-export-pv","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","docs:build":"node scripts/generate-code-documentation.cjs","docs:check":"node scripts/verify-code-documentation.cjs","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","check:secrets":"node scripts/check-repository-secrets.cjs","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run release:prepare && npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run release:prepare && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run release:prepare && npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","release:prepare":"node scripts/prepare-release-assets.cjs","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","test:zero-export-pv":"node scripts/verify-zero-export-pv-coordinator.cjs && node scripts/verify-zero-export-charging.cjs && node scripts/verify-heating-rod-central-zero-export.js && node scripts/verify-zero-export-storage-probe.cjs && node scripts/verify-zero-export-appcenter.cjs && node scripts/verify-zero-export-core.cjs","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:publish-overlay":"node scripts/verify-publish-overlay.cjs","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","test:stable-1.0.6-dc":"node scripts/verify-stable-1.0.6-dc-control.cjs","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-coordinator":"node scripts/verify-mesh-coordinator.cjs && node scripts/verify-mesh-coordinator-access.cjs && node scripts/verify-mesh-transformer-accounting.cjs && node scripts/verify-mesh-app-lifecycle.cjs","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stable-1.0.9-access":"node scripts/verify-stable-1.0.9-access.cjs && node scripts/verify-docs-layout.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:stable-1.0.4-auto-pv":"node scripts/verify-stable-1.0.4-auto-pv-phases.cjs","test:stable-1.0.9-browser":"node scripts/verify-stable-1.0.9-browser.cjs","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:stable-1.0.12-publish":"node scripts/verify-stable-1.0.12-publish-upgrade.cjs && npm run test:npm-version-free-guard && npm run test:npm-version-free-runtime && npm run test:publish-overlay","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:stable-1.0.10-security":"node scripts/verify-stable-1.0.10-secret-guard.cjs","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:stable-1.0.7-notifications":"node scripts/verify-stable-1.0.7-notifications.cjs","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.11-documentation":"npm run docs:check && node scripts/verify-stable-1.0.11-documentation.cjs","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:stable-1.0.8-storage-licenses":"node scripts/verify-stable-1.0.8-storage-licenses.cjs","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:stable-1.0.5-storage-protection":"node scripts/verify-stable-1.0.5-storage-protection-telemetry.cjs","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","nodemailer":"10.0.10","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.17_1790194255810_0.852284609472816","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"iobroker.nexowatt-ui","version":"1.0.19","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.19","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"6b0f4241a125a2f2ec4ebbf16ae42c21ff55c44d","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.19.tgz","fileCount":386,"integrity":"sha512-A7T0tmVRcaPbHzYGyF8HYBuWxSKEbyoi/mX+EXsEMBYUABB6ANgGKLkI995QvDdWgzvgJOUAY5+mEmb5cesixA==","signatures":[{"sig":"MEYCIQDpk7DZcKDYsm51uxHUWYnf1WIlnW0pEl8IEDnzYmh1bQIhALylKO5kDLW9Yg2j04u/AmEznyp7mr0kAfT83lBySnUA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDWMaTLlhhPCS+x/Uh1kgpnaXuts44pqwv03jBjETySEAIgTwiaHjamntAgi3Zo/XpCZXsNMl+O9GugjfJUxa9mvis=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19000309},"main":"main.js","engines":{"node":">=22"},"gitHead":"d95de16f4354d9f55b2734cf31adeb05a9545fb4","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-1.0.4-auto-pv && npm run test:stable-1.0.5-storage-protection && npm run test:stable-1.0.6-dc && npm run test:stable-1.0.7-notifications && npm run test:stable-1.0.8-storage-licenses && npm run test:stable-1.0.9-access && npm run test:stable-1.0.10-security && npm run test:stable-1.0.11-documentation && npm run test:stable-1.0.12-publish && npm run test:stable-release && npm run test:mesh-coordinator && npm run test:zero-export-pv && npm run test:stable-1.0.18-charging && npm run test:stable-1.0.19-grid-share","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","docs:build":"node scripts/generate-code-documentation.cjs","docs:check":"node scripts/verify-code-documentation.cjs","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","check:secrets":"node scripts/check-repository-secrets.cjs","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run release:prepare && npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run release:prepare && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run release:prepare && npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","release:prepare":"node scripts/prepare-release-assets.cjs","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","test:zero-export-pv":"node scripts/verify-zero-export-pv-coordinator.cjs && node scripts/verify-zero-export-charging.cjs && node scripts/verify-heating-rod-central-zero-export.js && node scripts/verify-zero-export-storage-probe.cjs && node scripts/verify-zero-export-appcenter.cjs && node scripts/verify-zero-export-core.cjs","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:publish-overlay":"node scripts/verify-publish-overlay.cjs","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","test:stable-1.0.6-dc":"node scripts/verify-stable-1.0.6-dc-control.cjs","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-coordinator":"node scripts/verify-mesh-coordinator.cjs && node scripts/verify-mesh-coordinator-access.cjs && node scripts/verify-mesh-transformer-accounting.cjs && node scripts/verify-mesh-app-lifecycle.cjs","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stable-1.0.9-access":"node scripts/verify-stable-1.0.9-access.cjs && node scripts/verify-docs-layout.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:stable-1.0.4-auto-pv":"node scripts/verify-stable-1.0.4-auto-pv-phases.cjs","test:stable-1.0.9-browser":"node scripts/verify-stable-1.0.9-browser.cjs","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:stable-1.0.12-publish":"node scripts/verify-stable-1.0.12-publish-upgrade.cjs && npm run test:npm-version-free-guard && npm run test:npm-version-free-runtime && npm run test:publish-overlay","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:stable-1.0.10-security":"node scripts/verify-stable-1.0.10-secret-guard.cjs","test:stable-1.0.18-charging":"node scripts/verify-stable-1.0.18-charging.cjs","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:stable-1.0.19-grid-share":"node scripts/verify-stable-1.0.19-grid-share.cjs","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:stable-1.0.7-notifications":"node scripts/verify-stable-1.0.7-notifications.cjs","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.11-documentation":"npm run docs:check && node scripts/verify-stable-1.0.11-documentation.cjs","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:stable-1.0.8-storage-licenses":"node scripts/verify-stable-1.0.8-storage-licenses.cjs","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:stable-1.0.5-storage-protection":"node scripts/verify-stable-1.0.5-storage-protection-telemetry.cjs","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","nodemailer":"10.0.10","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.19_1790280098497_0.384499128285259","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"iobroker.nexowatt-ui","version":"1.0.20","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"author":{"name":"NexoWatt"},"license":"UNLICENSED","_id":"iobroker.nexowatt-ui@1.0.20","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"1f40fed6160f26844c90885437e776fbd193797b","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.20.tgz","fileCount":392,"integrity":"sha512-S8+5UD5f4gdnkJHD2YOPhVgwSZDVWXtnPx8Bq/ye/YFhIEPRxM3bGWqiBpmuxLnHT1f9AEiwPUoX0ihg8bF7Bg==","signatures":[{"sig":"MEQCIDzK36V5utfiQcmBA0QgULR+sPKHIkmNU5wimq0tMRkqAiBrxyoMeGdz+f5eeQGf4wbr+Mch0NupPBYl8B3RBKo/4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC60HrnTXhTvFsnWyvWmlrPxIkXD9oOxyuhmXe57zX4LQIgX/3GG7VWr8tPJpgQSXug88MnlNcYWAJ5qOqaFqlG814=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19087246},"main":"main.js","engines":{"node":">=22"},"gitHead":"c92f3abda5474e94d858d9d1c75fb144db163107","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-1.0.4-auto-pv && npm run test:stable-1.0.5-storage-protection && npm run test:stable-1.0.6-dc && npm run test:stable-1.0.7-notifications && npm run test:stable-1.0.8-storage-licenses && npm run test:stable-1.0.9-access && npm run test:stable-1.0.10-security && npm run test:stable-1.0.11-documentation && npm run test:stable-1.0.12-publish && npm run test:stable-release && npm run test:mesh-coordinator && npm run test:zero-export-pv && npm run test:stable-1.0.18-charging && npm run test:stable-1.0.19-grid-share && npm run test:stable-1.0.20-storage","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","docs:build":"node scripts/generate-code-documentation.cjs","docs:check":"node scripts/verify-code-documentation.cjs","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","check:secrets":"node scripts/check-repository-secrets.cjs","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run release:prepare && npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run release:prepare && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run release:prepare && npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","release:prepare":"node scripts/prepare-release-assets.cjs","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","test:zero-export-pv":"node scripts/verify-zero-export-pv-coordinator.cjs && node scripts/verify-zero-export-charging.cjs && node scripts/verify-heating-rod-central-zero-export.js && node scripts/verify-zero-export-storage-probe.cjs && node scripts/verify-zero-export-appcenter.cjs && node scripts/verify-zero-export-core.cjs && node scripts/verify-heating-rod-zero-export-tariff.cjs","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:publish-overlay":"node scripts/verify-publish-overlay.cjs","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","test:stable-1.0.6-dc":"node scripts/verify-stable-1.0.6-dc-control.cjs","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-coordinator":"node scripts/verify-mesh-coordinator.cjs && node scripts/verify-mesh-coordinator-access.cjs && node scripts/verify-mesh-transformer-accounting.cjs && node scripts/verify-mesh-app-lifecycle.cjs","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stable-1.0.9-access":"node scripts/verify-stable-1.0.9-access.cjs && node scripts/verify-docs-layout.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:stable-1.0.4-auto-pv":"node scripts/verify-stable-1.0.4-auto-pv-phases.cjs","test:stable-1.0.9-browser":"node scripts/verify-stable-1.0.9-browser.cjs","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:stable-1.0.12-publish":"node scripts/verify-stable-1.0.12-publish-upgrade.cjs && npm run test:npm-version-free-guard && npm run test:npm-version-free-runtime && npm run test:publish-overlay","test:stable-1.0.20-storage":"node scripts/verify-zero-export-storage-credit.cjs && node scripts/verify-stable-1.0.20-storage-allocation.cjs && node scripts/verify-stable-1.0.20-storage-grid-share.cjs","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:stable-1.0.10-security":"node scripts/verify-stable-1.0.10-secret-guard.cjs","test:stable-1.0.18-charging":"node scripts/verify-stable-1.0.18-charging.cjs","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:stable-1.0.19-grid-share":"node scripts/verify-stable-1.0.19-grid-share.cjs","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:stable-1.0.7-notifications":"node scripts/verify-stable-1.0.7-notifications.cjs","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.11-documentation":"npm run docs:check && node scripts/verify-stable-1.0.11-documentation.cjs","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:stable-1.0.8-storage-licenses":"node scripts/verify-stable-1.0.8-storage-licenses.cjs","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:stable-1.0.5-storage-protection":"node scripts/verify-stable-1.0.5-storage-protection-telemetry.cjs","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","nodemailer":"10.0.10","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.nexowatt-ui_1.0.20_1790358099644_0.5310340053821194","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"_id":"iobroker.nexowatt-ui@1.0.21","bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"dist":{"shasum":"c6d99c6d2c88f62cacd4ce2ca2cbad92545a67d4","tarball":"https://registry.npmjs.org/iobroker.nexowatt-ui/-/iobroker.nexowatt-ui-1.0.21.tgz","fileCount":395,"integrity":"sha512-tVMthJ1k+MZqTb3EdcYs19liT7qKWXThVbtS0g1nSNnB2Zrgz5bFOukfvup5egaVeFXmjZ6VqKi4NqcNVIJDag==","signatures":[{"sig":"MEYCIQDeA5+C+klPpHMN8JMqLGumOiYFz2Ace0QPnaM3UXwxUAIhAJblgC3x1vA9dcyKNKrtMuktHVJpYauJWiAKhKS3Scbi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGHOZI7knOetwqpTpkpFAZVonheNzjctXAu4ylsmcN7pAiEAzPHIyQaVv8CIJtoeBmJERQuLl975nSUZbwM6uuF7sT0="}],"unpackedSize":19145209},"main":"main.js","name":"iobroker.nexowatt-ui","author":{"name":"NexoWatt"},"engines":{"node":">=22"},"gitHead":"8b21af797d7f6c9eaf634d0d30e71e4e8084f288","license":"UNLICENSED","scripts":{"dev":"node main.js","test":"npm run test:all","build":"npm run admin:build","start":"node main.js","test:js":"node scripts/verify-publish.js","build:ts":"npm run clean:ts && npm run sync:ts-runtime-executables && npm run sync:ts-main-helpers && npm run sync:ts-scripts && npm run sync:ts-frontend-mirrors && npm run sync:ts-adapter-mirrors && npm run sync:ts-backend-mirrors && npm run sync:ts-adapter-helpers && npm run sync:ts-energy-flow-mirrors && npm run sync:ts-ems-mirrors && npm run sync:ts-shadow-bridges && npm run sync:ts-runtime-mirrors && npm run build:types","ci:check":"npm run test:all && npm run build:ts && npm pack --dry-run","clean:ts":"node scripts/clean-ts-build.js","test:all":"npm run publish:check && npm run test:types && npm run check:ts-source-syntax && npm run test:ems-shadow-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:rc57-ocpp-stability && npm run test:rc58-ocpp-compact-mapping && npm run test:rc59-ocpp21-native-storage-safety && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-heating-night-lock && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc64-storage-grid-charge-policy && npm run test:rc65-nt-price-target-override && npm run test:dc-station-display && npm run test:rc66-station-display-stable && npm run test:rc66-station-display-browser && npm run test:rc67-license-bootstrap-access && npm run test:rc68-para14a-communication-fallback && npm run test:dashboard-lp-status-typing && npm run test:rc69-dashboard-lp-feedback && npm run test:rc70-dashboard-lp-status-polish && npm run test:rc72-weather-pv-forecast-auto && npm run test:rc73-ems-admin-overview && npm run test:rc74-pv-forecast-customer-ui && npm run test:rc75-pv-forecast-admin-location && npm run test:rc76-pv-forecast-runtime-hardening && npm run test:rc77-pv-forecast-state-cache-bridge && npm run test:rc78-import-only-grid-budget && npm run test:rc79-import-soft-hard-zero-export && npm run test:rc80-soft-limit-fixed-ten-percent && npm run test:rc81-nvp-assignment-single-source && npm run test:rc82-permanent-grid-protection && npm run test:rc83-storage-cheap-only-log-object && npm run test:rc85 && npm run test:rc86 && npm run test:rc87 && npm run test:rc88 && npm run test:rc89 && npm run test:rc90 && npm run test:rc91 && npm run test:rc92 && npm run test:rc93 && npm run test:stable-1.0.2-health && npm run test:stable-1.0.3-home-appcenter && npm run test:stable-1.0.4-auto-pv && npm run test:stable-1.0.5-storage-protection && npm run test:stable-1.0.6-dc && npm run test:stable-1.0.7-notifications && npm run test:stable-1.0.8-storage-licenses && npm run test:stable-1.0.9-access && npm run test:stable-1.0.10-security && npm run test:stable-1.0.11-documentation && npm run test:stable-1.0.12-publish && npm run test:stable-release && npm run test:mesh-coordinator && npm run test:zero-export-pv && npm run test:stable-1.0.18-charging && npm run test:stable-1.0.19-grid-share && npm run test:stable-1.0.20-storage && npm run test:zero-export-inverter-mapping","build:all":"npm run build && npm run build:ts","test:rc85":"node scripts/verify-rc85-stability-contract.cjs","test:rc86":"node scripts/verify-rc86-gate-a-demand-binding.cjs","test:rc87":"node scripts/verify-rc87-monitoring-display-only.cjs","test:rc88":"node scripts/verify-rc88-memory-stability.cjs","test:rc89":"node scripts/verify-rc89-admin-overview-health.cjs","test:rc90":"node test/rc90-sse-resync.test.cjs","test:rc91":"node scripts/verify-rc91-cross-app-catalog.js","test:rc92":"node scripts/verify-rc92-history-mobile.cjs","test:rc93":"node scripts/verify-rc93-certified-export-authority.cjs","test:repo":"npm run check:conflicts && npm run repo:conflict-check && npm run publish:check","ts:doctor":"node scripts/ts-doctor.js","typecheck":"tsc -p tsconfig.json --noEmit","bump:major":"node scripts/bump-version.js major","bump:minor":"node scripts/bump-version.js minor","bump:patch":"node scripts/bump-version.js patch","docs:build":"node scripts/generate-code-documentation.cjs","docs:check":"node scripts/verify-code-documentation.cjs","test:quick":"npm run publish:check","test:types":"npm run check:tsconfig-modern && npm run check:ts-source-syntax && npm run check:ts-source-integrity && npm run check:ts-canonical && npm run verify:ts-scaffold && npm run test:ts-script-mirrors && npm run test:ts-frontend-mirrors && npm run test:ts-backend-mirrors && npm run test:ts-adapter-mirrors && npm run test:frontend-mirror-runtime && npm run test:api-state-feature && npm run test:api-state-feature-runtime && npm run test:backend-api-state && npm run test:energy-flow-utils && npm run test:energy-flow-resolver && npm run test:energy-flow-mirrors && npm run test:energy-flow-regression && npm run test:energy-flow-regression-runtime && npm run test:ems-budget-heating-rod && npm run test:ems-budget-heating-rod-runtime && npm run test:ems-mirrors && npm run test:core-limits-reservations && npm run test:adapter-state-api && npm run test:adapter-state-api-runtime && npm run test:adapter-mirrors && npm run test:backend-api-state && npm run test:backend-api-state-runtime && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display && npm run test:feature-visibility-resolver && npm run test:feature-visibility-resolver-runtime && npm run test:feature-visibility-shadow && npm run test:feature-visibility-shadow-runtime && npm run test:frontend-display-runtime && npm run test:customer-feature-visibility && npm run test:customer-feature-visibility-runtime && npm run test:main-helpers && npm run typecheck && npm run typecheck:runtime-mirrors && npm run test:runtime-mirrors && npm run test:core-limits-runtime-typing && npm run test:heating-rod-runtime-typing && npm run test:shadow-bridges && npm run test:contracts && npm run test:feature-visibility-effective-runtime && npm run test:ai-advisor-runtime-typing && npm run test:history-runtime-typing && npm run test:smarthome-runtime-typing && npm run test:smarthome-config-runtime-typing && npm run test:ems-apps-runtime-typing && npm run test:app-runtime-typing && npm run test:main-runtime-typing && npm run test:adapter-helpers-mirrors && npm run test:main-runtime-helpers && npm run test:api-state-set-shadow && npm run test:live-dashboard-format-productive && npm run test:heating-rod-legacy-removal-candidate","admin:build":"npm --prefix src-admin-tab run build","build:types":"tsc -p tsconfig.build.json","publish:deps":"node scripts/ensure-publish-dev-deps.js","test:package":"node scripts/verify-publish.js && npm pack --dry-run","admin:install":"npm --prefix src-admin-tab install","check:secrets":"node scripts/check-repository-secrets.cjs","git:conflicts":"node scripts/verify-git-conflict-state.js","publish:check":"node scripts/verify-release-artifact.js","release:check":"npm run release:prepare && npm run test:all && npm run build:ts && npm run publish:check && npm run test:package-runtime-start-smoke && npm run test:package","ioBroker:check":"node scripts/verify-publish.js","prepublishOnly":"npm run release:check-version-free && npm run release:prepare && npm run publish:check && npm run test:stable-release && node scripts/verify-publish.js && npm run test:package-runtime-start-smoke","publish:strict":"npm run release:prepare && npm run publish:check && npm publish && npm run release:verify-npm","test:contracts":"node scripts/verify-ts-contracts.js","check:conflicts":"npm run git:conflicts","release:prepare":"node scripts/prepare-release-assets.cjs","sync:ts-scripts":"node scripts/build-ts-script-mirrors.js","test:nl-p1-dsmr":"node scripts/verify-nl-p1-dsmr.js","build:ts-scripts":"npm run sync:ts-scripts","check:ts-scripts":"node scripts/build-ts-script-mirrors.js --check","githooks:install":"node scripts/install-githooks.js","sync:ts-frontend":"npm run sync:ts-frontend-mirrors","test:ems-mirrors":"npm run test:ts-ems-mirrors","test:ts-scaffold":"node scripts/verify-ts-scaffold.js","build:ems-mirrors":"npm run sync:ts-ems-mirrors","check:ts-frontend":"npm run check:ts-frontend-mirrors","test:main-helpers":"node scripts/verify-ts-main-helpers.js && npm run check:ts-main-helpers","test:release:full":"node scripts/publish-check-runner.js","test:ts-canonical":"npm run check:ts-canonical","test:ts-integrity":"npm run check:ts-source-integrity","typecheck:backend":"tsc -p tsconfig.backend.json --noEmit","check:ts-canonical":"node scripts/verify-ts-canonical-structure.js","release:verify-npm":"node scripts/verify-npm-registry-version.js","test:mesh-ack-gate":"node scripts/verify-mesh-ack-gate.js","typecheck:frontend":"tsc -p tsconfig.frontend.json --noEmit","verify:ts-scaffold":"node scripts/verify-ts-scaffold.js","repo:conflict-check":"npm run git:conflicts","sync:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js","test:mesh-microgrid":"node scripts/verify-mesh-microgrid.js","test:script-mirrors":"npm run test:ts-script-mirrors","test:shadow-bridges":"node scripts/verify-ts-shadow-bridges.js && npm run check:ts-shadow-bridges","test:shadow-json-ui":"node scripts/verify-ts-shadow-json-modal.js","test:stable-release":"node scripts/verify-stable-release.cjs","test:ts-ems-mirrors":"node scripts/verify-ts-ems-mirrors.js && npm run check:ts-ems-mirrors","test:zero-export-pv":"node scripts/verify-zero-export-pv-coordinator.cjs && node scripts/verify-zero-export-charging.cjs && node scripts/verify-heating-rod-central-zero-export.js && node scripts/verify-zero-export-storage-probe.cjs && node scripts/verify-zero-export-appcenter.cjs && node scripts/verify-zero-export-core.cjs && node scripts/verify-heating-rod-zero-export-tariff.cjs","typecheck:contracts":"tsc -p tsconfig.contracts.json --noEmit","build:script-mirrors":"node scripts/build-ts-script-mirrors.js","build:shadow-bridges":"npm run sync:ts-shadow-bridges","check:ts-ems-mirrors":"node scripts/build-ts-ems-mirrors.js --check","sync:ts-main-helpers":"node scripts/build-ts-main-helpers.js","test:adapter-mirrors":"npm run test:ts-adapter-mirrors","test:backend-mirrors":"npm run test:ts-backend-mirrors","test:evcs-tile-hover":"node scripts/verify-evcs-tile-hover.js","test:main-api-shadow":"node scripts/verify-ts-main-api-shadow.js","test:mesh-bridge-ack":"node scripts/verify-mesh-bridge-ack.js","test:publish-overlay":"node scripts/verify-publish-overlay.cjs","test:runtime-mirrors":"npm run test:ts-runtime-mirrors","test:stable-1.0.6-dc":"node scripts/verify-stable-1.0.6-dc-control.cjs","typecheck:backend-js":"tsc -p tsconfig.backend-js.json --noEmit","build:adapter-helpers":"npm run sync:ts-adapter-helpers","build:adapter-mirrors":"npm run sync:ts-adapter-mirrors","build:backend-mirrors":"npm run sync:ts-backend-mirrors","check:ts-main-helpers":"node scripts/build-ts-main-helpers.js --check","check:tsconfig-modern":"node scripts/verify-tsconfig-modern.js","sync:frontend-mirrors":"npm run sync:ts-frontend-mirrors","test:evcs-hover-state":"node scripts/verify-evcs-hover-state.js","test:frontend-display":"node scripts/verify-ts-frontend-display.js","test:frontend-mirrors":"npm run test:ts-frontend-mirrors && npm run test:frontend-mirror-runtime","test:license-editions":"node scripts/verify-license-editions.js","test:mesh-coordinator":"node scripts/verify-mesh-coordinator.cjs && node scripts/verify-mesh-coordinator-access.cjs && node scripts/verify-mesh-transformer-accounting.cjs && node scripts/verify-mesh-app-lifecycle.cjs","test:mesh-node-limits":"node scripts/verify-mesh-node-limits.js","test:rc55:fail-closed":"node scripts/test-rc55-fail-closed.cjs","test:resolver-mirrors":"npm run test:ts-resolver-mirrors && npm run test:resolver-mirror-runtime","test:shadow-readiness":"node scripts/verify-ts-shadow-readiness.js","test:ts-source-syntax":"npm run check:ts-source-syntax","typecheck:frontend-js":"tsc -p tsconfig.frontend-js.json --noEmit","build:frontend-mirrors":"npm run sync:ts-frontend-mirrors","build:ts-runtime-tests":"tsc -p tsconfig.test-runtime.json","check:frontend-mirrors":"npm run check:ts-frontend-mirrors","check:ts-source-syntax":"node scripts/verify-ts-source-syntax.js","sync:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js","test:adapter-state-api":"node scripts/verify-ts-adapter-state-api.js","test:api-state-feature":"node scripts/verify-ts-api-state-feature.js","test:backend-api-state":"node scripts/verify-ts-backend-api-state.js","test:burger-menu-guard":"node scripts/verify-burger-menu-guard.js","test:charging-phase-ui":"node scripts/verify-ts-charging-phase-ui.js","test:energy-flow-types":"npm run typecheck","test:energy-flow-utils":"node scripts/verify-ts-energy-flow-utils.js","test:grid-export-guard":"node scripts/verify-grid-export-guard.js","test:mesh-local-bridge":"node scripts/verify-mesh-local-bridge.js","test:npm-release-guard":"node scripts/verify-npm-release-guard-static.js","test:ts-script-mirrors":"node scripts/verify-ts-script-mirrors.js && npm run check:ts-scripts","check:ts-nocheck-budget":"node scripts/verify-ts-nocheck-budget.js","check:ts-shadow-bridges":"node scripts/build-ts-shadow-bridges.js --check","sync:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js","sync:ts-adapter-mirrors":"npm run sync:ts-adapter-helpers","sync:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js","sync:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js","test:app-runtime-typing":"node scripts/verify-ts-app-runtime-typing.js","test:dc-station-display":"node scripts/verify-dc-station-display.js","test:ems-shadow-runtime":"node scripts/verify-ts-ems-shadow-runtime.js","test:feature-visibility":"node scripts/verify-ts-feature-visibility.js","test:fenecon-nvp-shadow":"node scripts/verify-fenecon-nvp-shadow.js","test:mesh-target-groups":"node scripts/verify-mesh-target-groups.js","test:runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:ts-adapter-mirrors":"node scripts/verify-ts-adapter-mirrors.js && node scripts/verify-ts-adapter-mirror-runtime.js","test:ts-backend-mirrors":"node scripts/verify-ts-backend-mirrors.js && npm run check:ts-backend-mirrors","test:ts-runtime-cleanup":"npm run test:runtime-js-cleanup","test:ts-runtime-mirrors":"node scripts/verify-ts-runtime-mirrors.js && npm run check:ts-runtime-mirrors","check:ts-adapter-helpers":"node scripts/build-ts-adapter-helpers.js --check","check:ts-adapter-mirrors":"npm run check:ts-adapter-helpers","check:ts-backend-mirrors":"node scripts/build-ts-backend-mirrors.js --check","check:ts-runtime-mirrors":"node scripts/build-ts-runtime-mirrors.js --check","sync:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js","test:device-auto-mapping":"node scripts/verify-device-auto-mapping.js","test:energy-flow-mirrors":"npm run test:ts-energy-flow-mirrors","test:energy-flow-mode-ui":"node scripts/verify-ts-energy-flow-mode-ui.js","test:installer-back-link":"node scripts/verify-installer-back-link.js","test:main-api-productive":"node scripts/verify-ts-main-api-productive.js","test:main-runtime-typing":"node scripts/verify-ts-main-runtime-typing.js","test:mesh-active-control":"node scripts/verify-mesh-active-control.js","test:mesh-peer-fieldtest":"node scripts/verify-mesh-peer-fieldtest.js","test:mesh-peer-hardening":"node scripts/verify-mesh-peer-hardening.js","test:mesh-target-release":"node scripts/verify-mesh-target-release.js","test:public-api-security":"node scripts/verify-public-api-security.js","test:pv-source-dedup-cap":"node scripts/verify-pv-source-dedup-cap.js","test:rc42-fenecon-shadow":"npm run test:fenecon-nvp-shadow && npm run test:fenecon-nvp-shadow-runtime && npm run test:fenecon-authority-runtime && npm run test:fenecon-hybrid-controller && npm run test:storage-fenecon-day-no-write && npm run test:safety-envelope-final-write","test:rc51-ocpp-telemetry":"node scripts/verify-rc51-ocpp-telemetry-normalization.js","test:rc57-ocpp-stability":"node scripts/verify-rc57-ocpp-stability.js","test:rc61-evcs-hardening":"node scripts/verify-rc61-evcs-hardening.js","test:release-safety-gate":"node scripts/verify-release-safety-gate.js","test:runtime-executables":"npm run check:ts-runtime-executables","test:stable-1.0.2-health":"node scripts/verify-stable-1.0.2-health-heartbeat.cjs","test:stable-1.0.9-access":"node scripts/verify-stable-1.0.9-access.cjs && node scripts/verify-docs-layout.cjs","test:stage-a-diagnostics":"node scripts/verify-stage-a-diagnostics.js","test:ts-frontend-mirrors":"node scripts/verify-ts-frontend-mirrors.js && npm run check:ts-frontend-mirrors","test:ts-resolver-mirrors":"npm run test:energy-flow-mirrors && npm run test:feature-visibility-resolver","test:ts-source-integrity":"npm run check:ts-source-integrity","build:energy-flow-mirrors":"npm run sync:ts-energy-flow-mirrors","build:runtime-executables":"npm run sync:ts-runtime-executables","check:ts-frontend-mirrors":"node scripts/build-ts-frontend-mirrors.js --check","check:ts-source-integrity":"node scripts/verify-ts-source-integrity.js","release:generate-manifest":"node scripts/generate-release-artifact-manifest.js","test:api-state-set-shadow":"node scripts/verify-ts-api-state-set-shadow.js","test:brand-header-cleanup":"npm run clean:ts && tsc -p tsconfig.brand-header-cleanup.json && node build-ts/brand-header-cleanup/tests/brand-header-cleanup-runtime.js","test:energy-flow-resolver":"node scripts/verify-ts-energy-flow-resolver.js","test:evcs-online-id-depth":"node scripts/verify-evcs-online-id-depth.js","test:main-helpers-runtime":"node scripts/verify-ts-main-helpers-runtime.js","test:main-runtime-helpers":"node scripts/verify-ts-main-runtime-helpers.js","test:mesh-target-fairness":"node scripts/verify-mesh-target-fairness.js","test:no-release-artifacts":"node scripts/verify-no-release-artifacts.js","test:publish-check-runner":"node scripts/publish-check-runner.js --verify","test:stable-1.0.4-auto-pv":"node scripts/verify-stable-1.0.4-auto-pv-phases.cjs","test:stable-1.0.9-browser":"node scripts/verify-stable-1.0.9-browser.cjs","test:system-language-i18n":"node scripts/verify-system-language-i18n.cjs","typecheck:runtime-mirrors":"tsc -p tsconfig.runtime-mirrors.json --noEmit","release:check-version-free":"node scripts/verify-npm-version-free.js","test:actuator-c3-nexologic":"node scripts/verify-actuator-c3-nexologic.js","test:customer-write-policy":"node scripts/verify-customer-write-policy.js","test:evcs-status-hardening":"node scripts/verify-evcs-status-hardening.js","test:mesh-peer-fail-closed":"node scripts/verify-mesh-peer-fail-closed.js","test:rc55:auto-arbitration":"node scripts/test-rc55-operating-strategy-auto-arbitration.js","test:shadow-diagnostics-ui":"node scripts/verify-ts-shadow-diagnostics-ui.js","test:smarthome-scene-guard":"node scripts/verify-smarthome-scene-guard.js","test:stable-1.0.12-publish":"node scripts/verify-stable-1.0.12-publish-upgrade.cjs && npm run test:npm-version-free-guard && npm run test:npm-version-free-runtime && npm run test:publish-overlay","test:stable-1.0.20-storage":"node scripts/verify-zero-export-storage-credit.cjs && node scripts/verify-stable-1.0.20-storage-allocation.cjs && node scripts/verify-stable-1.0.20-storage-grid-share.cjs","test:ts-runtime-js-cleanup":"node scripts/verify-ts-runtime-js-cleanup.js","test:zero-export-fast-path":"node scripts/verify-zero-export-fast-path.js","sync:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js","sync:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js","test:accepted-power-effects":"node scripts/verify-accepted-power-effects.js","test:charging-grid-cap-safe":"node scripts/verify-charging-grid-cap-safe.js","test:core-limits-productive":"node scripts/verify-ts-core-limits-productive.js","test:core-limits-rest-gates":"node scripts/verify-ts-core-limits-rest-gates.js","test:ems-budget-heating-rod":"node scripts/verify-ts-ems-budget-heating-rod.js","test:energy-flow-plant-gate":"node scripts/verify-ts-energy-flow-plant-gate.js","test:energy-flow-regression":"node scripts/verify-ts-energy-flow-regression.js","test:energy-ledger-operator":"node scripts/verify-energy-ledger-operator.js","test:heating-rod-productive":"node scripts/verify-ts-heating-rod-productive.js","test:history-runtime-typing":"node scripts/verify-ts-history-runtime-typing.js","test:npm-version-free-guard":"node scripts/verify-npm-version-free-guard-static.js","test:protected-license-rc45":"node scripts/verify-protected-license-rc45.js","test:regression-safety-gate":"node scripts/verify-regression-safety-gate.js","test:stable-1.0.10-security":"node scripts/verify-stable-1.0.10-secret-guard.cjs","test:stable-1.0.18-charging":"node scripts/verify-stable-1.0.18-charging.cjs","test:storage-nvp-fast-servo":"node scripts/verify-storage-nvp-fast-servo.js","test:storage-policy-runtime":"node scripts/verify-storage-policy-runtime.js","test:ts-energy-flow-mirrors":"node scripts/verify-ts-energy-flow-mirrors.js && npm run check:ts-energy-flow-mirrors","test:ts-runtime-executables":"npm run check:ts-runtime-executables","check:ts-energy-flow-mirrors":"node scripts/build-ts-energy-flow-mirrors.js --check","check:ts-runtime-executables":"node scripts/build-ts-runtime-executables.js --check","test:actuator-safety-arbiter":"node scripts/verify-actuator-safety-arbiter.js","test:actuator-shadow-arbiter":"node scripts/verify-actuator-shadow-arbiter.js","test:adapter-helpers-mirrors":"node scripts/verify-ts-adapter-helpers.js && npm run check:ts-adapter-helpers","test:charging-control-shadow":"node scripts/verify-ts-charging-management-control-shadow.js","test:charging-final-handover":"node scripts/verify-ts-charging-final-handover.js","test:charging-grid-cap-clamp":"node scripts/verify-charging-grid-cap-clamp.js","test:ems-apps-runtime-typing":"node scripts/verify-ts-ems-apps-runtime-typing.js","test:energy-flow-active-test":"node scripts/verify-ts-energy-flow-active-test.js","test:energy-flow-regressions":"node scripts/verify-energy-flow-regression-cases.js","test:energy-flow-switch-mode":"node scripts/verify-ts-energy-flow-switch-mode.js","test:evcs-station-permission":"node scripts/verify-evcs-station-permission.js","test:frontend-mirror-runtime":"node scripts/verify-ts-frontend-mirror-runtime.js","test:heating-rod-normal-path":"node scripts/verify-ts-heating-rod-normal-path.js","test:mesh-microgrid-operator":"node scripts/verify-mesh-microgrid-operator.js","test:mesh-microgrid-planning":"node scripts/verify-mesh-microgrid-planning.js","test:mesh-microgrid-receiver":"node scripts/verify-mesh-microgrid-receiver.js","test:rc49-para14a-evcs-start":"node scripts/verify-rc49-para14a-evcs-start-stability.js","test:rc61-heating-night-lock":"node scripts/verify-rc61-heating-rod-night-manual-release.js","test:rc73-ems-admin-overview":"node scripts/verify-rc73-ems-admin-overview.js","test:resolver-mirror-runtime":"npm run test:energy-flow-regression-runtime && npm run test:feature-visibility-resolver-runtime","test:safety-active-load-stop":"node scripts/verify-safety-active-load-stop.js","test:storage-policy-baseline":"node scripts/verify-storage-policy-baseline.js","test:tariff-freshness-safety":"node scripts/verify-tariff-freshness-safety.js","test:tariff-provider-runtime":"node scripts/verify-tariff-provider-runtime.js","test:actuator-c3-prime-movers":"node scripts/verify-actuator-c3-prime-movers.js","test:charging-phase-selection":"node scripts/verify-ts-charging-phase-selection.js","test:charging-safety-handover":"node scripts/verify-ts-charging-safety-handover.js","test:core-limits-reservations":"node scripts/verify-ts-core-limits-reservations.js","test:datapoint-strict-numbers":"node scripts/verify-datapoint-strict-numbers.js","test:dp-picker-current-folder":"node scripts/verify-dp-picker-current-folder.js","test:energy-flow-fixed-source":"node scripts/verify-ts-energy-flow-fixed-source-prep.js","test:energy-ledger-foundation":"node scripts/verify-energy-ledger-foundation.js","test:evcs-visual-online-state":"node scripts/verify-evcs-visual-online-state.js","test:field-security-hardening":"npm run test:public-api-security && npm run test:mesh-peer-fail-closed && npm run test:customer-write-policy","test:frontend-display-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-display.json && node build-ts/frontend-display/tests/frontend-display-runtime.js","test:heating-rod-debug-bridge":"node scripts/verify-ts-heating-rod-debug-bridge.js","test:module-lifecycle-para14a":"node scripts/verify-module-lifecycle-para14a.js","test:npm-version-free-runtime":"node scripts/verify-npm-version-free-runtime.js","test:para14a-eebus-direct-api":"node scripts/verify-para14a-eebus-direct-api.js","test:rc44-smarthome-stability":"npm run test:nexologic-editor-connection-rc44 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexowatt-eos-branding-rc44 && npm run test:nexologic-desktop-layout-rc44 && npm run test:smarthome-customer-dp-mapping && npm run test:nexologic-lifecycle-hardening && npm run test:smarthome-contract-runtime && npm run test:smarthome-ui-capabilities && npm run test:dp-picker-current-folder && npm run test:smarthome-config-transactional && npm run test:smarthome-scene-guard","test:rc62-app-stability-audit":"node scripts/verify-rc62-app-stability-audit.js","test:safety-module-deactivate":"node scripts/verify-safety-module-deactivate.js","test:smarthome-runtime-typing":"node scripts/verify-ts-smarthome-runtime-typing.js","test:stable-1.0.19-grid-share":"node scripts/verify-stable-1.0.19-grid-share.cjs","test:storage-anti-export-ramp":"node scripts/verify-storage-anti-export-ramp.js","test:adapter-state-api-runtime":"npm run clean:ts && tsc -p tsconfig.adapter-state-api.json && node build-ts/adapter-state-api/tests/adapter-state-api-runtime.js","test:ai-advisor-runtime-typing":"node scripts/verify-ts-ai-advisor-runtime-typing.js","test:api-state-feature-runtime":"npm run clean:ts && tsc -p tsconfig.api-state-feature.json && node build-ts/api-state-feature/tests/api-state-feature-runtime.js","test:app-center-install-colors":"npm run clean:ts && tsc -p tsconfig.app-center-install-colors.json && node build-ts/app-center-install-colors/tests/app-center-install-colors-runtime.js","test:appcenter-auth-modal-lock":"node scripts/verify-appcenter-auth-modal-lock.js","test:backend-api-state-runtime":"npm run clean:ts && tsc -p tsconfig.backend-api-state.json && node build-ts/backend-api-state/tests/backend-api-state-runtime.js","test:energy-flow-normal-source":"node scripts/verify-ts-energy-flow-normal-source.js && node scripts/verify-energy-flow-deep-debug-scan.js","test:energy-flow-ts-productive":"node scripts/verify-ts-energy-flow-productive-activation.js","test:energy-wallet-diagnostics":"node scripts/verify-energy-wallet-diagnostics.js","test:feature-visibility-shadow":"node scripts/verify-ts-feature-visibility-shadow.js","test:fenecon-authority-runtime":"node scripts/verify-fenecon-authority-runtime.js","test:fenecon-hybrid-controller":"node scripts/verify-fenecon-hybrid-controller.js","test:heating-rod-legacy-pruned":"node scripts/verify-ts-heating-rod-legacy-pruned.js","test:license-browser-lock-rc45":"node scripts/verify-license-browser-lock-rc45.js","test:nexologic-scrollbars-rc45":"node scripts/verify-nexologic-scrollbars-rc45.js","test:rc58-ocpp-compact-mapping":"node scripts/verify-rc58-ocpp-compact-mapping.js","test:smarthome-ui-capabilities":"node scripts/verify-smarthome-ui-capabilities.js","test:storage-charge-demand-cap":"node scripts/verify-storage-charge-demand-cap.js","test:storage-e3dc-rscp-profile":"node scripts/verify-storage-e3dc-rscp-profile.js","test:storage-manual-dp-routing":"node scripts/verify-storage-manual-dp-routing.js","test:tariff-provider-appcenter":"node scripts/verify-tariff-provider-appcenter.js","test:zero-export-commissioning":"node scripts/verify-zero-export-commissioning.js","test:zero-export-sink-priority":"node scripts/verify-zero-export-sink-priority.js","test:actuator-authority-arbiter":"node scripts/verify-actuator-authority-arbiter.js","test:charging-allocation-shadow":"node scripts/verify-ts-charging-allocation-shadow.js","test:charging-budget-productive":"node scripts/verify-ts-charging-budget-productive.js","test:charging-management-shadow":"node scripts/verify-ts-charging-management-shadow.js","test:charging-write-plan-shadow":"node scripts/verify-ts-charging-write-plan-shadow.js","test:core-limits-runtime-typing":"node scripts/verify-ts-core-limits-runtime-typing.js","test:core-limits-shadow-log-fix":"node scripts/verify-core-limits-shadow-log-fix.js","test:dashboard-lp-status-typing":"tsc -p tsconfig.dashboard-lp-status.json --noEmit","test:energy-flow-candidate-mode":"node scripts/verify-ts-energy-flow-candidate-mode.js","test:energy-flow-shadow-runtime":"node scripts/verify-ts-energy-flow-shadow-runtime.js","test:evcs-control-alias-mapping":"node scripts/verify-evcs-control-alias-mapping.js","test:export-guard-stabilization":"node scripts/verify-export-guard-stabilization.js","test:feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.frontend-feature-visibility.json && node build-ts/frontend-feature-visibility/tests/frontend-feature-visibility-runtime.js","test:fenecon-nvp-shadow-runtime":"node scripts/verify-fenecon-nvp-shadow-runtime.js","test:heating-rod-legacy-cleanup":"node scripts/verify-ts-heating-rod-legacy-cleanup.js","test:heating-rod-runtime-typing":"node scripts/verify-ts-heating-rod-runtime-typing.js","test:multiuse-central-budget-c3":"node scripts/verify-multiuse-central-budget-c3.js","test:nexowatt-eos-branding-rc44":"node scripts/verify-nexowatt-eos-branding-rc44.js","test:nvp-coordinator-storage-pv":"node scripts/verify-nvp-coordinator-storage-pv.js","test:para14a-central-constraint":"node scripts/verify-para14a-central-constraint.js","test:pv-surplus-budget-priority":"node scripts/verify-pv-surplus-budget-priority.js","test:rc50-netoperator-interface":"node scripts/verify-rc50-netoperator-interface-foundation.js","test:rc69-dashboard-lp-feedback":"node scripts/verify-rc69-dashboard-lp-feedback.js","test:smarthome-contract-runtime":"node scripts/verify-smarthome-contract-runtime.js","test:stable-1.0.7-notifications":"node scripts/verify-stable-1.0.7-notifications.cjs","test:storage-farm-auto-dispatch":"node scripts/verify-storage-farm-auto-dispatch.js","test:storage-topology-authority":"node scripts/verify-storage-topology-authority.js","test:actuator-c3-thermal-heating":"node scripts/verify-actuator-c3-thermal-heating.js","test:actuator-c3-threshold-relay":"node scripts/verify-actuator-c3-threshold-relay.js","test:appcenter-writable-dp-gates":"node scripts/verify-appcenter-writable-dp-gate-contract.js","test:charging-control-productive":"node scripts/verify-ts-charging-control-productive.js","test:core-limits-pv-physical-cap":"node scripts/verify-core-limits-pv-physical-cap.js","test:customer-feature-visibility":"node scripts/verify-ts-customer-feature-visibility.js","test:evcs-energy-unit-conversion":"node scripts/verify-evcs-energy-unit-conversion.js","test:feature-visibility-resolver":"node scripts/verify-ts-feature-visibility-resolver.js","test:heating-rod-normal-takeover":"node scripts/verify-ts-heating-rod-normal-takeover.js","test:live-energy-flow-5s-cadence":"node scripts/verify-live-energy-flow-5s-cadence.js","test:mesh-microgrid-commandguard":"node scripts/verify-mesh-microgrid-commandguard.js","test:mesh-two-instance-fieldtest":"node scripts/verify-mesh-two-instance-fieldtest.js","test:package-runtime-start-smoke":"node scripts/verify-package-runtime-start-smoke.js","test:rc59-ocpp21-mapping-browser":"node scripts/verify-rc59-ocpp21-mapping-browser.js","test:rc60-universal-auto-wallbox":"node scripts/verify-rc60-universal-auto-wallbox.js","test:rc66-station-display-stable":"node scripts/verify-rc66-station-display-stable.js","test:safety-envelope-final-write":"node scripts/verify-safety-envelope-final-write.js","test:stable-1.0.11-documentation":"npm run docs:check && node scripts/verify-stable-1.0.11-documentation.cjs","test:stable-1.0.3-home-appcenter":"node scripts/verify-stable-1.0.3-home-appcenter-access.cjs","test:storage-nvp-fast-controller":"node scripts/verify-storage-nvp-fast-controller.js","test:storage-policy-core-cleanup":"node scripts/verify-storage-policy-core-cleanup.js","test:storage-single-tab-coupling":"node scripts/verify-storage-single-tab-coupling.js","test:tariff-storage-status-truth":"node scripts/verify-tariff-storage-status-truth.js","test:ui-fullwidth-smarthome-rc47":"node scripts/verify-ui-fullwidth-smarthome-rc47.js","test:adapter-shutdown-timer-guard":"node scripts/verify-adapter-shutdown-timer-guard.js","test:app-center-structure-cleanup":"node scripts/verify-app-center-structure-cleanup.js","test:charging-minpv-base-reaction":"node scripts/verify-charging-minpv-base-reaction.js","test:energy-flow-live-test-states":"node scripts/verify-ts-energy-flow-live-test-states.js","test:energy-origin-ledger-runtime":"node scripts/verify-energy-origin-ledger-runtime.js","test:evcs-input-refresh-hardening":"node scripts/verify-evcs-input-refresh-hardening.js","test:live-energy-flow-15s-cadence":"npm run test:live-energy-flow-5s-cadence","test:multiuse-storage-policy-only":"node scripts/verify-multiuse-storage-policy-only.js","test:operating-strategies-current":"npm run test:rc55:auto-arbitration && npm run test:rc55:fail-closed && npm run test:rc56:operating-strategies-fieldtest && npm run test:rc56:operating-strategies-browser","test:rc45-access-scroll-stability":"npm run test:nexologic-scrollbars-rc45 && npm run test:protected-license-rc45 && npm run test:license-browser-lock-rc45 && npm run test:privileged-customer-role-split-rc45 && npm run test:nexologic-editor-browser-rc44 && npm run test:customer-workspace-access-rc44 && npm run test:nexologic-desktop-layout-rc44","test:rc66-station-display-browser":"node scripts/verify-rc66-station-display-browser.js","test:rc74-pv-forecast-customer-ui":"node scripts/verify-rc74-pv-forecast-customer-ui.cjs","test:rc78-import-only-grid-budget":"node scripts/verify-rc78-import-only-grid-budget.cjs && npm run test:charging-grid-cap-safe && npm run test:charging-grid-cap-clamp && npm run test:loadmanagement-grid-cap-sanity && npm run test:core-limits-typed-runtime-phase1 && npm run test:core-limits-typed-runtime-phase2 && npm run test:safety-envelope-final-write","test:real-plant-shadow-evaluation":"node scripts/verify-ts-real-plant-shadow-evaluation.js","test:shadow-diagnostics-usability":"node scripts/verify-shadow-diagnostics-usability.js","test:shadow-real-plant-evaluation":"node scripts/verify-ts-shadow-real-plant-evaluation.js","test:storage-discharge-demand-cap":"node scripts/verify-storage-discharge-demand-cap.js","test:storage-farm-config-fallback":"node scripts/verify-storage-farm-config-fallback.js","test:storage-fenecon-day-no-write":"node scripts/verify-storage-fenecon-day-no-write.js","test:system-language-i18n-runtime":"node scripts/verify-system-language-i18n-runtime.cjs","test:zero-export-inverter-mapping":"node scripts/verify-zero-export-inverter-mapping.cjs","test:zero-export-sink-ack-history":"node scripts/verify-zero-export-sink-ack-history.js","test:ai-advisor-payload-productive":"node scripts/verify-ts-ai-advisor-payload-productive.js","test:charging-js-executor-fallback":"node scripts/verify-ts-charging-js-executor-fallback.js","test:charging-productive-hardening":"npm run test:charging-allocation-productive && npm run test:charging-write-plan-productive && npm run test:charging-js-executor-fallback && npm run test:charging-safety-handover && npm run test:charging-normal-source-lockdown && npm run test:charging-final-handover && npm run test:charging-multipoint-station-budget && npm run test:charging-minpv-base-reaction && npm run test:pv-unused-evcs-release-to-storage && npm run test:charging-infrastructure-budget && npm run test:evcs-control-alias-mapping && npm run test:charging-storage-assist-policy && npm run test:storage-evcs-protect-vendor-profiles && npm run test:evcs-storage-protection-no-standby-pulse && npm run test:evcs-confirmed-demand-reservation && npm run test:evcs-universal-demand-normalization && npm run test:rc60-universal-auto-orchestrator && npm run test:rc60-universal-auto-wallbox && npm run test:rc61-evcs-hardening && npm run test:rc63-availability-storage-grid-gate && npm run test:rc65-nt-price-target-override","test:energy-flow-productive-active":"node scripts/verify-ts-energy-flow-productive-active.js","test:grid-export-guard-diagnostics":"node scripts/verify-grid-export-guard-diagnostics.js","test:loadmanagement-summary-actual":"node scripts/verify-loadmanagement-summary-actual.js","test:measurement-freshness-stage-b":"node scripts/verify-measurement-freshness-stage-b.js","test:nexologic-desktop-layout-rc44":"node scripts/verify-nexologic-desktop-layout-rc44.js","test:nexologic-editor-browser-rc44":"node scripts/verify-nexologic-editor-browser-rc44.js","test:nexologic-lifecycle-hardening":"node scripts/verify-nexologic-lifecycle-hardening.js","test:rc52-charging-diagnostics-log":"node scripts/verify-rc52-charging-diagnostics-log.js && node scripts/verify-rc52-charging-diagnostics-browser.js","test:rc65-nt-price-target-override":"node scripts/verify-rc65-nt-price-target-override.js","test:rc67-license-bootstrap-access":"node scripts/verify-rc67-license-bootstrap-access.js","test:rc72-weather-pv-forecast-auto":"node scripts/verify-rc72-weather-pv-forecast-auto.cjs","test:smarthome-customer-dp-mapping":"node scripts/verify-smarthome-customer-dp-mapping.js","test:stable-1.0.8-storage-licenses":"node scripts/verify-stable-1.0.8-storage-licenses.cjs","test:storagefarm-appcenter-restore":"node scripts/verify-storagefarm-appcenter-restore.js","test:app-center-structure-hardening":"npm run test:app-center-structure-cleanup","test:charging-active-demand-reserve":"node scripts/verify-charging-active-demand-reserve.js","test:charging-allocation-productive":"node scripts/verify-ts-charging-allocation-productive.js","test:charging-infrastructure-budget":"node scripts/verify-charging-infrastructure-budget.js","test:charging-storage-assist-policy":"node scripts/verify-ts-charging-storage-assist-policy.js && npm run test:evcs-storage-policy-default-self-consumption","test:charging-write-plan-productive":"node scripts/verify-ts-charging-write-plan-productive.js","test:customer-workspace-access-rc44":"node scripts/verify-customer-workspace-access-rc44.js","test:ems-budget-heating-rod-runtime":"npm run clean:ts && tsc -p tsconfig.ems-budget-heating-rod.json && node build-ts/ems-budget-heating-rod/tests/ems-budget-heating-rod-runtime.js","test:energy-flow-fallback-reduction":"node scripts/verify-ts-energy-flow-fallback-reduction.js","test:energy-flow-productive-default":"node scripts/verify-ts-energy-flow-productive-default.js","test:energy-flow-regression-runtime":"npm run clean:ts && tsc -p tsconfig.energy-flow-regression.json && node build-ts/energy-flow-regression/tests/energy-flow-regression-runtime.js","test:evcs-no-vehicle-no-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-storage-policy-mode-scope":"node scripts/verify-evcs-storage-policy-mode-scope.js","test:feature-visibility-shadow-hook":"node scripts/verify-ts-feature-visibility-shadow-hook.js","test:heating-rod-emergency-fallback":"node scripts/verify-ts-heating-rod-emergency-fallback.js","test:heating-rod-hard-fallback-only":"node scripts/verify-ts-heating-rod-hard-fallback-only.js","test:heating-rod-runtime-evaluation":"node scripts/verify-ts-heating-rod-runtime-evaluation.js","test:heating-rod-shadow-power-model":"node scripts/verify-heating-rod-ts-shadow-power-model.js","test:heating-rod-zero-export-budget":"node scripts/verify-heating-rod-zero-export-budget.js","test:loadmanagement-grid-cap-sanity":"node scripts/verify-loadmanagement-grid-cap-sanity.js","test:nvp-coordinator-diagnostics-ui":"node scripts/verify-nvp-coordinator-diagnostics-ui.js","test:peak-shaving-readback-contract":"node scripts/verify-peak-shaving-readback-contract.js","test:rc82-permanent-grid-protection":"node scripts/verify-rc82-permanent-grid-protection.cjs && npm run test:nvp-coordinator-storage-pv && npm run test:safety-envelope-final-write","test:smarthome-config-transactional":"node scripts/verify-smarthome-config-transactional.js","test:storage-appcenter-output-modes":"node scripts/verify-storage-appcenter-output-modes.js","test:storage-control-app-separation":"node scripts/verify-storage-control-app-separation.js","test:storage-farm-appcenter-restore":"node scripts/verify-storage-farm-appcenter-restore.js","test:storage-farm-dispatch-recovery":"node scripts/verify-storage-farm-dispatch-recovery.js","test:storage-license-power-profiles":"node scripts/verify-storage-license-power-profiles.js","test:storage-sungrow-hybrid-profile":"node scripts/verify-storage-sungrow-hybrid-profile.js","test:storage-zero-write-firewall-v2":"node scripts/verify-storage-zero-write-firewall-v2.js","test:central-pv-budget-orchestration":"node scripts/verify-central-pv-budget-orchestration.js","test:charging-normal-source-lockdown":"node scripts/verify-ts-charging-normal-source-lockdown.js","test:energy-flow-safe-candidate-mode":"node scripts/verify-ts-energy-flow-safe-candidate-mode.js","test:energy-origin-ledger-foundation":"node scripts/verify-energy-origin-ledger-foundation.js","test:heating-rod-legacy-pruned-debug":"node scripts/verify-ts-heating-rod-legacy-pruned-debug.js","test:heating-rod-legacy-removal-plan":"node scripts/verify-ts-heating-rod-legacy-removal-plan.js","test:rc64-storage-grid-charge-policy":"node scripts/verify-rc64-storage-grid-charge-policy.js","test:rc70-dashboard-lp-status-polish":"node scripts/verify-rc70-dashboard-lp-status-polish.js","test:rc75-pv-forecast-admin-location":"node scripts/verify-rc75-pv-forecast-admin-location.cjs","test:shadow-diagnostics-ui-stability":"node scripts/verify-ts-shadow-diagnostics-ui-stability.js","test:smarthome-config-runtime-typing":"node scripts/verify-ts-smarthome-config-runtime-typing.js","test:stable-1.0.5-storage-protection":"node scripts/verify-stable-1.0.5-storage-protection-telemetry.cjs","test:storage-command-family-readback":"node scripts/verify-storage-command-family-readback.js","test:storage-farm-one-second-cadence":"node scripts/verify-storage-farm-one-second-cadence.js","test:storage-nvp-topology-hysteresis":"node scripts/verify-storage-nvp-topology-hysteresis.js","test:storagefarm-appcenter-hydration":"node scripts/verify-storagefarm-appcenter-hydration.js","test:storagefarm-menu-appcenter-gate":"node scripts/verify-storagefarm-menu-appcenter-gate.js","test:charging-control-productive-prep":"node scripts/verify-ts-charging-control-productive-prep.js","test:core-limits-typed-runtime-phase1":"node scripts/verify-core-limits-typed-runtime-phase1.js","test:core-limits-typed-runtime-phase2":"node scripts/verify-core-limits-typed-runtime-phase2.js","test:core-limits-typed-runtime-phase3":"node scripts/verify-core-limits-typed-runtime-phase3.js","test:heating-rod-legacy-final-cleanup":"node scripts/verify-ts-heating-rod-legacy-final-cleanup.js","test:live-dashboard-format-productive":"node scripts/verify-ts-live-dashboard-format-productive.js","test:loadmanagement-actual-vs-reserve":"node scripts/verify-loadmanagement-actual-vs-reserve.js","test:nexologic-editor-connection-rc44":"node scripts/verify-nexologic-editor-connection-rc44.js","test:nexologic-simulation-layout-rc46":"node scripts/verify-nexologic-simulation-layout-rc46.js","test:optional-menu-feature-visibility":"node scripts/verify-optional-menu-feature-visibility.js","test:rc60-universal-auto-orchestrator":"node scripts/verify-rc60-universal-auto-orchestrator.js","test:storage-actual-power-nvp-balance":"node scripts/verify-storage-actual-power-nvp-balance.js","test:storage-appcenter-dp-persistence":"node scripts/verify-storage-appcenter-dp-persistence.js","test:appcenter-auth-smarthome-security":"node scripts/verify-appcenter-auth-smarthome-security.js","test:charging-minpv-base-mode-reaction":"npm run test:charging-minpv-base-reaction","test:core-limits-rest-gates-productive":"node scripts/verify-ts-core-limits-rest-gates-productive.js","test:energy-flow-measurement-authority":"node scripts/verify-energy-flow-measurement-authority.js","test:evcs-confirmed-demand-reservation":"node scripts/verify-evcs-confirmed-demand-reservation.js","test:evcs-global-storage-station-pages":"node scripts/verify-evcs-global-storage-station-pages.js","test:feature-visibility-shadow-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-shadow.json && node build-ts/feature-visibility-shadow/tests/feature-visibility-shadow-runtime.js","test:heating-rod-js-fallback-hard-only":"node scripts/verify-ts-heating-rod-js-fallback-hard-only.js","test:loadmanagement-budget-consistency":"node scripts/verify-loadmanagement-budget-consistency.js","test:pv-unused-evcs-release-to-storage":"node scripts/verify-pv-unused-evcs-release-to-storage.js","test:rc56:operating-strategies-browser":"node scripts/verify-rc56-operating-strategies-browser.js","test:rc59-ocpp21-native-storage-safety":"node scripts/verify-rc59-ocpp21-native-storage-safety.js","test:rc79-import-soft-hard-zero-export":"node scripts/verify-rc79-import-soft-hard-zero-export-feedforward.cjs && npm run test:safety-module-deactivate && npm run test:zero-export-sink-priority && npm run test:zero-export-commissioning && npm run test:zero-export-fast-path && npm run test:zero-export-sink-ack-history && npm run test:safety-envelope-final-write","test:rc80-soft-limit-fixed-ten-percent":"node scripts/verify-rc80-soft-limit-fixed-ten-percent.cjs && npm run test:safety-envelope-final-write","test:rc81-nvp-assignment-single-source":"node scripts/verify-rc81-nvp-assignment-single-source.cjs && npm run test:safety-envelope-final-write","test:storage-control-functional-safety":"node scripts/verify-storage-control-functional-safety.js","test:storage-control-runtime-scenarios":"node scripts/verify-storage-control-runtime-scenarios.js","test:storage-multiuse-policy-isolation":"node scripts/verify-storage-multiuse-policy-isolation.js","test:tariff-provider-responsive-layout":"node scripts/verify-tariff-provider-responsive-layout.js","test:actuator-blocked-write-propagation":"node scripts/verify-actuator-blocked-write-propagation.js","test:appcenter-tariff-responsive-layout":"node scripts/verify-appcenter-tariff-responsive-layout.js","test:charging-multipoint-station-budget":"node scripts/verify-charging-multipoint-station-budget.js","test:feature-visibility-preview-runtime":"node scripts/verify-ts-feature-visibility-preview-runtime.js","test:heating-rod-legacy-compact-cleanup":"node scripts/verify-ts-heating-rod-legacy-compact-cleanup.js","test:nexologic-simulation-coverage-rc46":"node scripts/verify-nexologic-simulation-coverage-rc46.js","test:rc76-pv-forecast-runtime-hardening":"node scripts/verify-rc76-pv-forecast-runtime-hardening.cjs","test:rc83-storage-cheap-only-log-object":"node scripts/verify-rc83-storage-cheap-only-log-object.cjs","test:charging-allocation-productive-prep":"node scripts/verify-ts-charging-allocation-productive-prep.js","test:core-limits-reservations-productive":"node scripts/verify-ts-core-limits-reservations-productive.js","test:customer-feature-visibility-runtime":"npm run clean:ts && tsc -p tsconfig.customer-feature-visibility.json && node build-ts/customer-feature-visibility/tests/customer-feature-visibility-runtime.js","test:energy-flow-runtime-plant-reduction":"node scripts/verify-ts-energy-flow-runtime-plant-reduction.js","test:evcs-universal-demand-normalization":"node scripts/verify-evcs-universal-demand-normalization.js","test:feature-visibility-resolver-runtime":"npm run clean:ts && tsc -p tsconfig.feature-visibility-resolver.json && node build-ts/feature-visibility-resolver/tests/feature-visibility-resolver-runtime.js","test:privileged-customer-role-split-rc45":"node scripts/verify-privileged-customer-role-split-rc45.js","test:rc56:operating-strategies-fieldtest":"node scripts/test-rc56-operating-strategies-fieldtest.cjs","test:rc63-availability-storage-grid-gate":"node scripts/verify-rc63-availability-storage-grid-gate.js","test:rc68-para14a-communication-fallback":"node scripts/verify-rc68-para14a-communication-fallback.js","test:rc77-pv-forecast-state-cache-bridge":"node scripts/verify-rc77-pv-forecast-state-cache-bridge.cjs","test:storage-async-feedback-all-profiles":"node scripts/verify-storage-async-feedback-all-profiles.js","test:storage-nvp-smoothing-building-load":"node scripts/verify-storage-nvp-smoothing-building-load.js","test:feature-visibility-effective-runtime":"node scripts/verify-ts-feature-visibility-effective-runtime.js","test:heating-rod-legacy-removal-candidate":"node scripts/verify-ts-heating-rod-legacy-removal-candidate.js","test:pv-surplus-dynamic-storage-remainder":"node scripts/verify-pv-surplus-dynamic-storage-remainder.js","test:rc53-operating-strategies-foundation":"node scripts/verify-rc53-operating-strategies-foundation.js && node scripts/verify-rc53-operating-strategies-browser.js","test:storage-evcs-protect-vendor-profiles":"node scripts/verify-storage-evcs-protect-vendor-profiles.js","test:storage-farm-energy-flow-aggregation":"node scripts/verify-storage-farm-energy-flow-aggregation.js","test:heating-rod-shadow-calibration-parity":"node scripts/verify-heating-rod-shadow-calibration-parity.js","test:storage-appcenter-override-precedence":"node scripts/verify-storage-appcenter-override-precedence.js","test:storage-pv-load-feedforward-zero-stop":"node scripts/verify-storage-pv-load-feedforward-zero-stop.js","test:appcenter-writable-dp-runtime-contract":"node scripts/verify-appcenter-writable-dp-contract.js","test:heating-rod-normal-diagnostics-cleanup":"node scripts/verify-ts-heating-rod-normal-diagnostics-cleanup.js","test:rc54-operating-strategies-rule-builder":"node scripts/verify-rc54-operating-strategies-rules-simulation.js && node scripts/verify-rc54-operating-strategies-rule-builder.js && node scripts/verify-rc54-operating-strategies-browser.js","test:core-budget-publication-object-contract":"node scripts/verify-core-budget-publication-object-contract.js","test:evcs-storage-protection-no-standby-pulse":"node scripts/verify-evcs-storage-protection-no-standby-pulse.js","test:storage-sungrow-diagnostics-split-targets":"node scripts/verify-storage-sungrow-diagnostics-split-targets.js","test:evcs-storage-policy-default-self-consumption":"node scripts/verify-evcs-storage-policy-default-self-consumption.js"},"version":"1.0.21","_npmUser":{"name":"nexowatt","email":"info@nexowatt.com"},"homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"_npmVersion":"11.19.1","description":"NexoWatt EOS – local energy, charging and building control platform.","directories":{},"maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"_nodeVersion":"22.21.1","dependencies":{"express":"^4.22.2","nodemailer":"10.0.10","@iobroker/adapter-core":"^3.4.1","@iobroker/type-detector":"5.0.10"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"5.8.3","@types/node":"^22.19.21","@iobroker/testing":"^5.2.2","@iobroker/adapter-dev":"^1.5.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/iobroker.nexowatt-ui_1.0.21_1790712410677_0.3095083713242375"}}},"time":{"created":"2026-02-17T20:11:32.788Z","modified":"2026-09-29T20:06:51.105Z","0.6.144":"2026-02-17T20:11:33.133Z","0.6.209":"2026-03-29T16:57:33.515Z","0.6.211":"2026-04-03T11:48:26.897Z","0.6.214":"2026-04-08T07:05:20.381Z","0.6.218":"2026-04-10T15:27:37.559Z","0.6.219":"2026-04-12T15:42:30.602Z","0.6.221":"2026-04-12T17:56:34.530Z","0.6.222":"2026-04-14T18:24:35.887Z","0.6.223":"2026-04-17T17:42:24.282Z","0.6.225":"2026-04-17T19:44:24.630Z","0.6.226":"2026-04-17T20:11:25.807Z","0.6.227":"2026-04-18T05:20:57.005Z","0.6.228":"2026-04-19T07:08:00.541Z","0.6.229":"2026-04-19T08:49:16.079Z","0.6.230":"2026-04-19T09:40:33.093Z","0.6.231":"2026-04-19T20:39:35.416Z","0.6.233":"2026-04-20T05:13:16.088Z","0.6.234":"2026-04-20T10:04:04.715Z","0.6.235":"2026-04-21T11:56:36.826Z","0.6.237":"2026-04-22T15:27:46.324Z","0.6.238":"2026-04-22T16:27:47.970Z","0.6.239":"2026-04-22T19:28:36.642Z","0.6.240":"2026-04-22T20:02:12.523Z","0.6.241":"2026-04-23T09:46:46.566Z","0.6.242":"2026-04-23T11:55:04.651Z","0.6.243":"2026-04-23T12:53:12.601Z","0.6.244":"2026-04-23T13:25:03.279Z","0.6.245":"2026-04-23T18:53:29.754Z","0.6.246":"2026-04-24T11:50:01.819Z","0.6.247":"2026-04-24T17:05:56.753Z","0.6.248":"2026-04-24T18:28:50.389Z","0.6.249":"2026-04-25T04:27:09.521Z","0.6.250":"2026-04-25T05:26:44.311Z","0.6.251":"2026-04-25T18:07:15.874Z","0.6.252":"2026-04-25T20:08:56.517Z","0.6.253":"2026-04-26T05:29:24.043Z","0.6.254":"2026-04-26T07:20:28.137Z","0.6.255":"2026-04-26T08:05:05.547Z","0.6.256":"2026-04-26T15:16:24.900Z","0.6.257":"2026-04-27T11:22:12.312Z","0.6.258":"2026-04-27T12:32:10.243Z","0.6.259":"2026-04-27T13:12:06.480Z","0.6.260":"2026-04-28T14:11:24.554Z","0.6.261":"2026-04-28T19:27:43.666Z","0.6.262":"2026-04-29T07:24:22.846Z","0.6.264":"2026-04-29T09:56:51.999Z","0.6.265":"2026-04-29T10:48:07.218Z","0.6.266":"2026-04-29T11:35:33.227Z","0.6.267":"2026-04-29T12:41:43.675Z","0.6.268":"2026-04-29T15:44:22.569Z","0.6.270":"2026-04-29T18:54:03.468Z","0.7.0":"2026-04-29T20:14:11.675Z","0.7.1":"2026-04-30T03:48:39.156Z","0.7.2":"2026-04-30T09:47:43.285Z","0.7.3":"2026-04-30T10:36:46.673Z","0.7.4":"2026-04-30T14:26:30.214Z","0.7.5":"2026-04-30T19:33:40.732Z","0.7.6":"2026-05-01T07:09:01.004Z","0.7.7":"2026-05-01T08:08:03.853Z","0.7.8":"2026-05-01T16:00:55.897Z","0.7.9":"2026-05-02T05:41:25.207Z","0.7.10":"2026-05-02T06:26:11.131Z","0.7.11":"2026-05-02T07:16:57.771Z","0.7.13":"2026-05-03T08:34:01.791Z","0.7.14":"2026-05-03T15:43:02.904Z","0.7.15":"2026-05-03T17:08:40.643Z","0.7.17":"2026-05-05T16:23:10.891Z","0.7.19":"2026-05-07T13:09:04.231Z","0.7.20":"2026-05-07T14:20:44.672Z","0.7.21":"2026-05-07T14:50:41.125Z","0.7.22":"2026-05-24T13:25:15.161Z","0.7.23":"2026-05-24T13:53:00.138Z","0.7.24":"2026-05-24T15:04:37.695Z","0.7.25":"2026-05-26T18:32:13.779Z","0.7.26":"2026-05-27T13:43:58.448Z","0.7.27":"2026-06-09T15:40:08.246Z","0.7.28":"2026-06-09T16:43:20.895Z","0.7.29":"2026-06-09T17:39:21.441Z","0.7.30":"2026-06-09T18:19:12.388Z","0.7.31":"2026-06-09T18:52:20.135Z","0.7.32":"2026-06-09T19:50:47.844Z","0.7.33":"2026-06-09T20:08:17.805Z","0.7.34":"2026-06-09T20:41:51.376Z","0.7.37":"2026-06-09T21:13:47.284Z","0.7.38":"2026-06-09T21:36:40.253Z","0.7.40":"2026-06-10T08:07:20.618Z","0.7.41":"2026-06-10T09:03:29.947Z","0.7.42":"2026-06-10T09:34:31.936Z","0.7.44":"2026-06-11T04:05:03.441Z","0.7.45":"2026-06-11T05:51:14.492Z","0.7.46":"2026-06-11T06:28:32.573Z","0.7.47":"2026-06-11T06:53:01.161Z","0.7.48":"2026-06-11T09:24:24.938Z","0.7.49":"2026-06-11T09:59:13.814Z","0.7.50":"2026-06-11T10:50:05.159Z","0.7.51":"2026-06-11T11:22:44.287Z","0.7.55":"2026-06-12T09:56:01.924Z","0.8.2":"2026-06-17T05:47:32.757Z","0.8.5":"2026-06-17T19:34:37.596Z","0.8.6":"2026-06-17T20:26:23.717Z","0.8.7":"2026-06-18T03:43:28.310Z","0.8.8":"2026-06-18T13:55:07.922Z","0.8.10":"2026-06-18T16:51:31.094Z","0.8.11":"2026-06-18T18:01:30.861Z","0.8.12":"2026-06-18T19:28:32.936Z","0.8.19":"2026-06-21T17:51:13.328Z","0.8.23":"2026-06-22T15:59:01.622Z","0.8.25":"2026-06-22T18:17:40.686Z","0.8.30":"2026-06-22T21:01:36.259Z","0.8.31":"2026-06-23T03:48:29.293Z","0.8.32":"2026-06-23T04:17:56.056Z","0.8.33":"2026-06-23T04:57:24.193Z","0.8.34":"2026-06-23T05:34:11.579Z","0.8.35":"2026-06-23T14:32:40.738Z","0.8.36":"2026-06-23T14:59:31.550Z","0.8.37":"2026-06-23T15:28:33.674Z","0.8.41":"2026-06-25T17:35:34.229Z","0.8.55":"2026-06-28T18:12:52.168Z","0.8.57":"2026-06-28T19:48:14.562Z","0.8.58":"2026-06-28T20:24:31.637Z","0.8.60":"2026-06-29T19:22:22.264Z","0.8.61":"2026-06-29T19:56:53.054Z","0.8.62":"2026-06-29T20:57:02.261Z","0.8.64":"2026-06-29T21:36:08.714Z","0.8.65":"2026-06-30T03:47:15.928Z","0.8.66":"2026-07-01T19:41:58.725Z","0.8.67":"2026-07-05T12:45:21.760Z","0.8.68":"2026-07-05T13:27:17.435Z","0.8.69":"2026-07-06T15:49:38.874Z","0.8.71":"2026-07-06T18:02:46.683Z","0.8.72":"2026-07-06T20:09:38.632Z","0.8.73":"2026-07-06T20:48:14.397Z","0.8.75":"2026-07-07T03:32:25.997Z","0.8.76":"2026-07-07T18:13:08.370Z","0.8.78":"2026-07-07T19:28:11.358Z","0.8.79":"2026-07-08T04:42:50.286Z","0.8.81":"2026-07-08T06:25:53.262Z","0.8.82":"2026-07-08T09:53:06.749Z","0.8.83":"2026-07-08T12:29:43.472Z","0.8.84":"2026-07-08T16:44:42.446Z","0.8.85":"2026-07-08T17:45:02.889Z","0.8.86":"2026-07-13T13:01:45.752Z","0.8.87":"2026-07-13T14:02:38.388Z","0.8.89":"2026-07-13T18:14:53.669Z","0.8.90":"2026-07-13T20:13:14.233Z","0.8.91":"2026-07-14T10:58:26.866Z","0.8.93":"2026-07-14T12:04:59.580Z","0.8.94":"2026-07-14T19:45:36.994Z","0.8.95":"2026-07-15T06:07:27.425Z","0.8.96":"2026-07-15T09:08:27.335Z","0.8.97":"2026-07-15T10:01:19.427Z","0.8.98":"2026-07-15T12:16:45.757Z","0.8.99":"2026-07-15T17:25:32.712Z","0.8.100":"2026-07-15T19:56:51.595Z","0.8.101":"2026-07-16T03:47:55.313Z","0.8.103":"2026-07-16T11:55:20.573Z","0.8.105":"2026-07-16T13:37:01.039Z","0.8.106":"2026-07-16T15:23:26.003Z","0.8.107":"2026-07-16T17:47:34.368Z","0.8.109":"2026-07-17T06:24:38.266Z","0.8.110":"2026-07-17T09:36:37.177Z","0.8.111":"2026-07-17T09:59:18.319Z","0.8.112":"2026-07-17T11:27:51.735Z","0.8.113":"2026-07-17T12:47:50.530Z","0.8.114":"2026-07-17T17:25:21.224Z","0.8.120":"2026-07-18T10:45:26.874Z","0.8.121":"2026-07-18T12:06:16.476Z","0.8.122":"2026-07-18T13:52:15.831Z","0.8.123":"2026-07-18T15:36:50.816Z","0.8.124":"2026-07-18T17:05:31.049Z","0.8.125":"2026-07-19T06:27:24.345Z","0.8.126":"2026-07-19T08:24:28.078Z","0.8.127":"2026-07-19T09:43:03.909Z","0.8.128":"2026-07-19T15:06:04.121Z","0.8.129":"2026-07-19T20:08:55.746Z","0.8.130":"2026-07-20T05:55:44.807Z","0.8.131":"2026-07-20T07:02:12.289Z","0.8.132":"2026-07-20T10:54:44.781Z","0.8.133":"2026-07-20T13:06:34.545Z","0.8.134":"2026-07-20T18:33:09.971Z","0.8.136":"2026-07-22T17:59:30.950Z","0.8.138":"2026-07-23T06:46:29.632Z","0.8.139":"2026-07-23T08:54:28.279Z","0.8.141":"2026-07-27T12:21:26.947Z","0.8.142":"2026-07-27T14:05:34.094Z","0.8.143":"2026-07-27T17:00:16.753Z","0.8.144":"2026-07-27T19:08:28.737Z","0.8.145":"2026-07-27T20:18:38.340Z","0.8.146":"2026-07-27T20:45:28.796Z","0.8.147":"2026-07-28T08:06:47.911Z","0.8.148":"2026-08-01T10:03:19.208Z","0.8.149":"2026-08-01T15:36:01.157Z","0.8.150":"2026-08-01T21:12:13.157Z","0.8.151":"2026-08-02T09:29:01.221Z","0.8.153":"2026-08-03T17:48:45.508Z","0.8.155":"2026-08-05T17:45:28.082Z","0.8.156":"2026-08-06T18:56:40.030Z","0.8.157":"2026-08-07T03:44:59.120Z","0.8.158":"2026-08-07T14:52:07.514Z","0.8.159":"2026-08-08T06:38:36.329Z","0.8.160":"2026-08-08T11:41:53.883Z","0.8.161":"2026-08-08T12:40:18.256Z","0.8.162":"2026-08-08T17:39:02.995Z","0.8.163":"2026-08-08T20:16:18.453Z","0.8.164":"2026-08-09T09:53:12.727Z","0.8.165":"2026-08-09T11:16:23.805Z","0.8.166":"2026-08-09T14:49:38.596Z","0.8.167":"2026-08-09T19:57:15.778Z","0.8.168":"2026-08-09T21:24:33.090Z","0.8.169":"2026-08-10T05:37:29.695Z","0.8.170":"2026-08-10T07:57:31.969Z","0.8.171":"2026-08-10T09:11:06.087Z","0.8.172":"2026-08-10T13:23:10.941Z","0.8.173":"2026-08-10T16:34:59.757Z","0.8.174":"2026-08-11T05:13:24.386Z","0.8.175":"2026-08-11T14:43:43.606Z","0.8.176":"2026-08-11T16:32:47.894Z","0.8.177":"2026-08-11T18:07:43.044Z","0.8.178":"2026-08-11T19:06:28.913Z","0.8.179":"2026-08-12T05:54:36.369Z","0.8.180":"2026-08-12T08:24:43.855Z","0.8.181":"2026-08-12T18:23:37.870Z","0.8.182":"2026-08-12T19:28:09.572Z","0.8.183":"2026-08-13T07:54:11.738Z","0.8.185":"2026-08-14T06:16:43.947Z","0.8.186":"2026-08-15T16:52:02.939Z","0.8.187":"2026-08-15T18:26:23.832Z","0.8.188":"2026-08-16T18:40:27.240Z","0.8.190":"2026-08-16T20:25:15.109Z","0.8.191":"2026-08-17T21:15:46.660Z","0.8.192":"2026-08-20T18:42:46.490Z","0.8.193":"2026-08-21T15:29:24.610Z","0.8.194":"2026-08-21T17:06:37.485Z","0.8.195":"2026-08-21T18:34:09.869Z","0.8.196":"2026-08-22T06:09:10.568Z","0.8.197":"2026-08-22T14:36:57.494Z","0.8.198":"2026-08-22T16:39:56.260Z","0.8.199":"2026-08-22T20:17:45.923Z","0.8.200":"2026-08-23T04:40:01.904Z","0.8.201":"2026-08-23T06:58:15.932Z","0.8.202":"2026-08-24T10:34:45.333Z","0.8.203":"2026-08-24T12:47:58.616Z","0.8.204":"2026-08-24T19:49:27.406Z","0.8.206":"2026-08-25T03:51:03.336Z","0.8.207":"2026-08-25T08:19:59.969Z","0.8.208":"2026-08-25T10:23:10.780Z","0.8.211":"2026-08-26T03:51:11.155Z","0.8.212":"2026-08-26T17:25:27.491Z","0.8.213":"2026-08-26T19:35:15.179Z","0.8.214":"2026-08-27T15:41:57.061Z","0.8.215":"2026-08-27T18:40:58.555Z","0.8.216":"2026-08-29T08:15:27.340Z","0.8.217":"2026-08-30T17:08:04.719Z","1.0.0":"2026-09-06T08:50:02.639Z","1.0.1":"2026-09-09T17:59:25.449Z","1.0.2":"2026-09-09T19:32:56.898Z","1.0.3":"2026-09-09T20:30:38.637Z","1.0.4":"2026-09-12T12:23:18.777Z","1.0.5":"2026-09-12T13:30:54.611Z","1.0.6":"2026-09-15T16:06:52.954Z","1.0.7":"2026-09-17T17:54:05.367Z","1.0.9":"2026-09-17T20:31:33.983Z","1.0.11":"2026-09-18T17:09:23.205Z","1.0.13":"2026-09-18T17:49:42.057Z","1.0.14":"2026-09-19T06:13:45.379Z","1.0.17":"2026-09-23T20:10:56.025Z","1.0.19":"2026-09-24T20:01:38.731Z","1.0.20":"2026-09-25T17:41:39.848Z","1.0.21":"2026-09-29T20:06:50.921Z"},"bugs":{"url":"https://github.com/NexoWatt/NexoWatt-ui/issues"},"author":{"name":"NexoWatt"},"license":"UNLICENSED","homepage":"https://github.com/NexoWatt/NexoWatt-ui#readme","keywords":["ioBroker","adapter","visualization","NexoWatt","Energie Management System","EMS"],"repository":{"url":"git+https://github.com/NexoWatt/NexoWatt-ui.git","type":"git"},"description":"NexoWatt EOS – local energy, charging and building control platform.","maintainers":[{"name":"nexowatt","email":"info@nexowatt.com"}],"readme":"ERROR: No README data found!","readmeFilename":""}